Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#FileStream-文件的读/写器,按行计算-刷新还是文件锁定?_C#_File_Filestream_Streamwriter - Fatal编程技术网

C#FileStream-文件的读/写器,按行计算-刷新还是文件锁定?

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

我有一个具有AutoFlush=true属性的StreamWriter。但是,当我随机打开文件时,仍然只能看到部分写入的文件。我正在编写一个需要在任何给定时间内完全写入(JSON)或不写入的文件

        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?读卡器应用程序未知,即许多读卡器可能正在查看文件。