如何读取另一个进程正在使用的文件?

时间:2010-12-02 21:25:59

标签: c#

我需要读取另一个进程正在使用的文件。我怎样才能在C#中实现这一目标?

谢谢!

4 个答案:

答案 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中提及的原因,您应该对使用此解决方案犹豫不决。