我正在使用TextWriter
在文本文件上每100毫秒写一次串行数据。但文本文件不会立即更新。有时,在.txt文件上显示书面文本需要几秒钟,有时需要一分钟。我该如何解决这个问题?
TextWriter tw;
tw = new StreamWriter(new FileStream(path + "\\" + currentSubdirName + "\\" + currentFileName, FileMode.CreateNew));
tw.Write(text);
答案 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");
}