【问题标题】:How to Read a text file continuosly using FileShare.ReadWrite mode in C#如何在 C# 中使用 FileShare.ReadWrite 模式连续读取文本文件
【发布时间】:2014-01-30 05:33:33
【问题描述】:

我有一个文本文件,它不断地从服务器数据中更新。现在,根据我的要求,只要将新行写入文本文件,我就必须阅读这一行并处理它,然后对所有人重复此操作新行被写入文本文件。为此,我必须连续读取文本文件。同样,我尝试使用 FileSystemWatcher,但后来知道它也非常昂贵且效率低下。 现在我正在尝试使用 FileShare.ReadWrite 连续阅读。这是我的 FileShare.ReadWrite 模式代码..

if (System.IO.File.Exists(FileToCopy) == true)
{
    var fs = new FileStream(FileToCopy, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    using (var reader = new StreamReader(fs))
    {
        string line;
        string rawcdr;
        while (true)
        {
            while ((line = reader.ReadLine()) != null)
            {
            }
        }
    }
}

所以我想问一下它是连续读取文件的正确方法还是文件完成后它会停止? 它会持续观察文件中的新行吗?

【问题讨论】:

    标签: c# filesystems text-files file-handling


    【解决方案1】:

    阅读器将在最后停止并关闭文件(如果您在代码中保留using)。

    您可以通过Reader.BaseStream(关于重置内部缓冲区的注意事项)检查文件大小和位置阅读器(配置为不使用 BOM 进行 Unicode 编码)到最后读取位置。

    请注意,两个进程需要合作选择打开模式,就像作者不允许共享一样,您将不得不阅读、重新打开和搜索。

    【讨论】:

    • 我可以在发布的代码中添加什么来持续读取文件的最佳方法是什么?
    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 2013-03-13
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多