2009-01-11 53 views
2
文件

我寫了一個程序,將etablish使用的TcpClient遠程計算機,我用它來在100K塊傳輸文件到遠程.NET應用程序的網絡連接,它inturn然後把它們寫入到HardDrive。除了涉及到ZIP文件時,所有文件傳輸都可以正常工作 - 很遺憾,需要注意的是複製文件始終爲98K ... ZIP文件是否存在一些黑暗的祕密,以防止以這種方式處理它們。同樣所有其他文件傳輸做工精細,圖像,XLS,TXT,CHM,EXE等C#讀「郵編」使用FileStream

困惑

回答

3

嘛,所以它有點棘手說究竟什麼是錯的,你還沒有表現出任何代碼。

通常錯誤是假設Stream.Read讀取所有你問它,而不是意識到它可能讀不太數據,但該金額實際上讀的返回值。

換句話說,代碼不應該是:

byte[] buffer = new byte[input.Length]; 
input.Read(buffer, 0, buffer.Length); 
output.Write(buffer, 0, buffer.Length); 

但類似:

byte[] buffer = new byte[32 * 1024]; 
int bytesRead; 
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    output.Write(buffer, 0, bytesRead); 
} 

但是,這只是一個猜測。如果你可以發佈一些代碼,我們會有更好的機會去搞清楚。

0

這可能是要覆蓋(而不是追加到),每塊現有的文件收到的?因此文件的最終大小將爲< =一個塊的大小。

,但沒有任何代碼,這是很難說的問題的原因。

1

實際的代碼將是有益的。

是否使用BinaryReader在/的BinaryWriter?

(而不是基於文本即數據爲基礎)。

你可以嘗試使用十六進制文件進行比較(例如Beyond Compare)比較原件和複印件,並看看是否給你任何線索。