读取已被其他进程使用的文件

时间:2016-04-11 21:54:33

标签: c# file io

我有一个C#应用程序试图读取另一个应用程序正在写入的日志文件。当我尝试读取文件时,我得到IOException

  

"进程无法访问该文件...因为它正被使用   另一个过程。"

到目前为止我尝试使用的是以下内容,但没有一个能解决问题

var log = File.ReadAllText(logPath);

var stream = new FileStream(logPath, FileMode.Open);

using (var stream = File.Open(logPath, FileMode.Open))
  {

  }

2 个答案:

答案 0 :(得分:1)

试试这个:

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

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

// Clean up
logFileReader.Close();
logFileStream.Close();

使用MethodMan的建议编辑

using(FileStream logFileStream = new FileStream(@"c:\test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
{
    using(StreamRead logFileReader = new StreamReader(logFileStream))
    {
        string text = logFileReader.ReadToEnd();
        // Your code..
    }
}

答案 1 :(得分:0)

如果“另一个应用”在创建/打开文件时不使用Share.Read,则无法执行任何操作。