如何读取另一个进程正在写入的文件

时间:2018-11-08 15:15:27

标签: c#

有一个文件C:\ acme.log,另一个程序(不是我的程序)正在写入该文件。这是一个日志文件,因此程序始终可以对其进行写入。

我想读取日志文件的当前内容。我尝试过

FileInfo fInfo = new FileInfo(@"C:\acme.log");
FileStream fileStream = fInfo.Open(FileMode.Open, FileAccess.Read);

此操作失败,并出现 System.IO.IOException:该进程无法访问文件'C:\ acme.log',因为它正在被另一个进程使用。

我可以在记事本中打开文件并查看其内容。如果记事本可以打开文件,则程序应该有一种方法可以这样做,不是吗?

1 个答案:

答案 0 :(得分:1)

在此处查看链接:

Reading a file which is locked by another process

这是该链接中的代码:

using (FileStream logFileStream = new FileStream("c:\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader logFileReader = new StreamReader(logFileStream))
{

   while (!logFileReader.EndOfStream)
   {
      string line = logFileReader.ReadLine();
      // Your code here
   }
}