c#连续读取文件

标签 c# file-io

我想像 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/3791103/

相关文章:

c# - 如何使用C#使图片背景透明?

c# - 如何覆盖 `is` 运算符

c# - C# 中的 StringBuilder 与 Span<string>

java - 创建文件并将其存储到外部存储

c - 解释 for(i=0;1;i++) 在 C 中的作用?

java - 从SD卡读取

c# - 具有相同属性名称的 AutoMapper 双向映射

C# - 平移光标

java - Java 中的 File.exists 有多贵

c++ - 如何超越现有文件的结尾?