我有一種方法,它使用二進制打字機寫一個記錄組成的幾個提示和一個字節數組到文件。作爲我的程序的一部分,此方法每秒執行十幾次。代碼如下:二進制打字機不打開文件在流結束
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