我想像 GNU tail 一样用“-f”参数连续读取文件。我需要它来实时读取日志文件。 正确的做法是什么?
最佳答案
使用 FileSystemWatcher
的更自然的方法:
var wh = new AutoResetEvent(false);
var fsw = new FileSystemWatcher(".");
fsw.Filter = "file-to-read";
fsw.EnableRaisingEvents = true;
fsw.Changed += (s,e) => wh.Set();
var fs = new FileStream("file-to-read", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using (var sr = new StreamReader(fs))
{
var s = "";
while (true)
{
s = sr.ReadLine();
if (s != null)
Console.WriteLine(s);
else
wh.WaitOne(1000);
}
}
wh.Close();
这里主读取周期停止等待传入数据,FileSystemWatcher
用于唤醒主读取周期。
关于c#连续读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700285/