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

我想通过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# file filelock

相关文章:

c# - 空传播算子和foreach

c# - 具有格式化文本的c#Treeview节点,例如标签和换行

c# - CAPICOM vs P /调用

c# - 将MMDDYYYY转换为01-JAN-YY

c# - 通过扩展属性查询Google API联系人

c# - 自定义命令不起作用

c# - ASP.net发布重定向?

c# - 在C#中正确实现F#单元

c# - 匿名类型和反射在一起有多“安全”?

c# - 如何以编程方式区分不同的IOException?