我需要读取另一个进程正在使用的文件。我怎样才能在C#中实现这一目标?
谢谢!
答案 0 :(得分:13)
如果其他进程对文件进行了独占锁定,则无法读取它。另一个进程锁定文件是有原因的;不要试图打败其他程序。如果您认为其他程序不必要地锁定文件,请与其他程序的作者联系。
如果他们对文件设置了非独占锁,则请求对该文件的共享访问,而不是请求独占访问。
答案 1 :(得分:3)
如果您只需要具有该文件的读取权限,则可以尝试以下操作:
using (var stream = File.Open("log.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var reader = new StreamReader(stream))
{
// Actions you perform on the reader.
}
代码来自this帖子。
答案 2 :(得分:0)
答案 3 :(得分:0)
访问锁定文件的一种方法是使用volume shadow copy service。
将this code从VB.Net移植到C#应该相对容易,并根据需要对其进行修改。
由于Eric Lippert在his answer中提及的原因,您应该对使用此解决方案犹豫不决。