使用TextWriter时,文本文件不会立即更新

时间:2016-03-10 13:54:42

标签: c# winforms

我正在使用TextWriter在文本文件上每100毫秒写一次串行数据。但文本文件不会立即更新。有时,在.txt文件上显示书面文本需要几秒钟,有时需要一分钟。我该如何解决这个问题?

   TextWriter tw;

    tw = new StreamWriter(new FileStream(path + "\\" + currentSubdirName + "\\" + currentFileName, FileMode.CreateNew));
    tw.Write(text);

2 个答案:

答案 0 :(得分:5)

仅在填充相关缓冲区时写入数据。您可以使用tw.Flush()强制刷新,这会将(部分)数据从TextWriter推送到FileStream

请注意,这可能会对性能产生重大影响。缓存和缓冲非常重要,因为磁盘比RAM慢得多(并且RAM比CPU慢得多)。确保成本是值得的,并且考虑只是偶尔冲洗一次。

答案 1 :(得分:4)

您需要调用flush以立即将任何缓冲数据写入文件

 TextWriter tw = new StreamWriter(new FileStream(path + "\\" + currentSubdirName + "\\" + currentFileName, FileMode.CreateNew));
 tw.Write(text);
 tw.Flush();
 tw.Dispose();

或者您可以在using语句中使用TextWriter,它将刷新TextWriter.Dispose上的所有缓冲数据,这样您就不需要处理Writer.Dispose

using (TextWriter tw = new StreamWriter(new FileStream(path + "\\" + currentSubdirName + "\\" + currentFileName, FileMode.CreateNew));)
{
    tw.Write("test");
}