使用C#.Net在Text文件中检查新行

时间:2017-03-17 15:14:55

标签: c# .net text newline

有人能告诉我在文本文件中检查新行的最佳方法是什么? 我有一个比例,它将权重值写入文本文件。然后我的C#程序必须读出最后一个值并将其用于其他计算。 我会阅读文本的最后一行并在几秒后重复这一点,但这是一个糟糕的解决方案,因为如果我只能在将新值写入文件时读取最后一个值,而不是每隔几秒钟就会更好。 那么如何检查文件中的新行?我应该使用文件日期或文件大小吗?什么是最好的方式?希望有人可以提供帮助。

       while (checkBox1.Checked)
        {
            //Create a new FileSystemWatcher and set its properties.
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = @"C:\";

            /* Watch for changes in LastAccess and LastWrite times, and the renaming of files or directories. */
            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;

            // Only watch text files.
            watcher.Filter = @"Textdokument.txt";
            watcher.Changed += new FileSystemEventHandler(OnChanged);
        }


    }

    private void OnChanged(object source, FileSystemEventArgs e)
    {
         textBox1.Text = "1234";


        if (e.ChangeType == WatcherChangeTypes.Changed)
        {

            string lastLine = File.ReadLines(e.FullPath).Last();
            textBox1.Text = lastLine;
        }
    }

这是我的代码,直到现在。没有显示错误但仍然没有任何反应。 可能是问题是其他应用程序正在写入文件,而我想从中读取它?这应该不是问题,还是我错了?

2 个答案:

答案 0 :(得分:3)

您可以使用FileSystemWatcher

  

当对系统大小进行更改时,将引发Changed事件   属性,上次写入时间,上次访问时间或安全权限   正在监视的目录中的文件或目录。

private static void OnChanged(object source, FileSystemEventArgs e)
{
   if(e.ChangeType == WatcherChangeTypes.Changed)
   {
       string lastLine = File.ReadLines(e.FullPath).Last();
   }
}

答案 1 :(得分:0)

您可以尝试计算文件的MD5哈希值,并与原始MD5哈希值进行比较,如果这两个匹配项不匹配,则会修改该文件。

然后使用下面的代码:仅读取最后一行

var lines = new ReverseLineReader(filename); var last = lines.Take(1);