C#FileStream-文件的读/写器,按行计算-刷新还是文件锁定?
我有一个具有AutoFlush=true属性的StreamWriter。但是,当我随机打开文件时,仍然只能看到部分写入的文件。我正在编写一个需要在任何给定时间内完全写入(JSON)或不写入的文件C#FileStream-文件的读/写器,按行计算-刷新还是文件锁定?,c#,file,filestream,streamwriter,C#,File,Filestream,Streamwriter,我有一个具有AutoFlush=true属性的StreamWriter。但是,当我随机打开文件时,仍然只能看到部分写入的文件。我正在编写一个需要在任何给定时间内完全写入(JSON)或不写入的文件 var sw = new StreamWriter("C:\file.txt", true /* append */, Encoding.ASCII) { AutoFlush = true }; sw.WriteLine("...."); // long
var sw = new StreamWriter("C:\file.txt", true /* append */, Encoding.ASCII) { AutoFlush = true };
sw.WriteLine("....");
// long running (think like a logging application) -- 1000s of seconds
sw.Close();
在sw.WriteLine()调用和sw.Close()之间,我希望打开文件,并始终保持“正确的数据格式”,即我的行应该完整
当前想法:
将FileStream(和/或StreamWriter)的内部缓冲区增加到128KB。然后,每隔128KB-1,对FileStream对象调用.Flush()。这就引出了我的下一个问题,当我调用Flush()时,是否应该在调用它之前获取Stream.Position并执行File.Lock(Position,128KB-1)?还是同花顺会处理这些
基本上我不希望阅读器能够读取Flush()之间的内容,因为它可能会部分损坏。基本上我不希望阅读器能够读取Flush()之间的内容,因为它可能会部分损坏 我想你有一条小溪。 有一个作家和一个读者。 在刷新完成之前,读卡器不应读取 您需要使用手动锁定机制,该机制在刷新呼叫后释放。
您可以在线实现,或者如果经常使用,您可以创建线程安全流。您使用的是什么读卡器?StreamReader?读卡器应用程序未知,即许多读卡器可能正在查看文件。