c# - C#访问锁定的文件

原文 标签 c# file filelock

我想通过C访问一个文件,它是通过一个不同的程序创建和处理的。
目前,我正在通过Windows资源管理器将文件复制到其他位置,然后使用该副本。由于副本很大,我宁愿直接处理原始文件。有什么办法吗?
普通文件流不允许任何共享访问模式。我可以控制这两个程序,所以如果需要的话,我也可以改变作者。

最佳答案

您需要确保执行写入和读取操作的程序设置了正确的文件共享,因此需要传递文件共享。请读入用于程序写入的文件流构造函数:

new FileStream("C:/Users/phil/tmp.txt",FileMode.Create,FileAccess.Write,FileShare.Read)

您还需要确保为正在读取文件的程序启用了fileshare.readwrite:
new FileStream("C:/Users/phil/tmp.txt",FileMode.Open,FileAccess.Read,FileShare.ReadWrite)

这将导致文件流构造函数对文件本身设置正确的锁。
您可以在msdn:http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx上找到有关构造函数的更多信息(还有其他重载也采用fileshare参数)

相关文章:

c# - WPF打印问题

c# - 从和XML文件读取源文件

c# - 在C#中使用file.move时文件锁定...如何停止或修复此问题

java - 在Java中,访问RandomAccessFile时从FileChannel获取FileLock的保证方法是什么?

java - 如何在Java Servlet中同步文件访问?

c# - C#SqlDataReader = null吗?

c# - 将List <int>添加到mysql参数

java - Java 7+文件创建

html - 用C将字符串写入文件

file - Golang flock filelocking thr panic:运行时错误:无效的内存地址或nil指针解除引用