我有一個進程有2個FileStream對象在同一個文件上運行。 這兩個對象打開使用相同的方法將文件:多個文件流在同一個文件導致寫入被忽略
file = new FileStream(fullPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
然後我寫一些字節他們兩個使用write方法,而另一個被忽略,只有最後一個叫寫承諾。寫使用下面的代碼被稱爲:
fh.file.Write(buffer, 0, count);
buf
等於在兩個呼叫"fd"
和count
等於2
我打電話close()
對於後兩個對象。程序結束後,輸出文件只有兩個應該寫入的「fd」中的一個。爲什麼會發生?我試圖在兩個對象上調用Flush()
,但它沒有什麼區別。
注意:致電Write()
由同一個線程完成。 最終的執行順序是這樣的:
open_obj1()
open_obj2()
write_obj1("fd")
write_obj2("fd")
close_obj1()
close_obj2()
這似乎是一個簡單的問題,但我不能得到問題的所在。兩個FileStreams是否在相同的地方讀取文件指針,然後嘗試寫入相同的地方,因爲它們都尋找到文件的結尾?如果是的話,如果我想要完全相同的執行順序,這有什麼解決方案?
爲什麼在同一個文件上需要兩個文件流? – Michael
'兩個FileStreams是否在同一個地方讀取文件指針,然後嘗試寫入相同的地方,因爲它們都尋找文件的末尾?'是 –
@Michael這是一種我需要通過的測試用例。 – mohRamadan