我有2個應用程序。一個在C++(窗口)打開一個二進制文件,並從中只讀取,我使用:在C++和C中寫入二進制文件#
fstream m_fsDataIN.open("C:\TTT", ios::in | ios::binary | ios::app);
和第二應用(在C#)打開文件,並寫入到它。我使用:
byte[] b = ... //have a binary data
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(
System.IO.File.Open(@"C:\TTT",
System.IO.FileMode.Append,
System.IO.FileAccess.Write,
System.IO.FileShare.ReadWrite));
bw.Write(b);
bw.Flush();
bw.Close();
的問題是,8個字節不正確寫入,比較一下出現b
陣列英寸
當我在C#應用程序中打開文件時,使用System.IO.FileMode.Append
它工作正常。
我檢查了應用程序,它寫錯了8個字節。
我想補充一點,前8個字節是2個計數器,每個計數器都是使用IPAddressHostToNetworkAddress
創建的。
我認爲問題出在C++應用程序中,我如何打開文件。
幫助, Thnaks
如果您向我們展示使用'IPAddressHostToNetworkAddress'的代碼,可能會有所幫助。無論如何,聽起來像是一個排序問題。 – Noldorin 2009-09-17 10:56:11
羅馬:開放看起來不錯,但你不顯示你如何從流中讀取。從流中讀取可以格式化(使用operator <<)或不使用;這可以使所有的差異。你可以發佈這些部分嗎? – LaszloG 2009-09-17 10:58:33
閱讀: std ::向量 \t m_vctDataIN; m_vctDataIN.resize(1000); m_fsDataIN.read(&m_vctDataIN [],1000); int nReadBytes \t = m_fsDataIN.gcount(); m_nBytesInBuffer + = nReadBytes; ***我發現了一件事: 當C++應用程序關閉時,C#應用程序正確寫入。當它結束時,它寫錯了。 –
2009-09-17 11:04:01