我有一种方法,它使用二进制打字机写一个记录组成的几个提示和一个字节数组到文件。作为我的程序的一部分,此方法每秒执行十几次。代码如下:二进制打字机不打开文件在流结束
iLogFileMutex.WaitOne();
using (BinaryWriter iBinaryWriter = new BinaryWriter(File.Open(iMainLogFilename, FileMode.OpenOrCreate, FileAccess.Write)))
{
iBinaryWriter.Seek(0, SeekOrigin.End);
foreach (ViewerRecord vR in aViewerRecords)
{
iBinaryWriter.Write(vR.Id);
iBinaryWriter.Write(vR.Timestamp);
iBinaryWriter.Write(vR.PayloadLength);
iBinaryWriter.Write(vR.Payload);
}
}
iLogFileMutex.ReleaseMutex();
上面的代码工作正常,但如果我删除与寻求通话线路,产生的二进制文件已损坏。例如,某些记录完全丢失,或者其中的一部分不存在,尽管绝大多数记录都写得很好。所以我想象错误的原因是当我反复打开和关闭文件时,文件中的当前位置并不总是在末尾,事情会被覆盖。
所以我的问题是:为什么不是C#确保当前位置在最后打开文件时?
PS:我从如果要追加到文件造成这个错误
解释一下,欢呼:) – CalumMcCall 2010-07-22 16:38:34