2012-08-25 102 views
-1

我正在通過套接字寫入文件/大量字節。寫入文件/大量字節失敗

但讓我們說我正在寫字節。我這樣做;

//Connection.data is a dataoutputstream 
byte[] a = new byte[filelength]; 
//load file into the array 
//write file 
for (int i = 0; i < a.length; i++) { 
Connection.data.writeByte(a[i]);            
} 

要接收:

//dat is a datainputstream 
byte[] byteA = new byte[bytestoread] 
for (int i = 0; i < toread; i++) { 
     byteA[i] = dat.readByte(); 
} 

我做記錄輸入的數據,並讓說,如果該文件是200000個字節,它停在各地的199990字節等,基本上字節[任何大小],它會在最後一個字節處停止,並超時。如果你不明白,我會解釋更多。謝謝。

+1

一次寫入一個字節會非常低效。我會建議一次寫入數據塊。例如512字節到32KB。 –

+0

那裏有同樣的問題。這就是爲什麼我嘗試這種方法。 – user1624309

+0

無論哪種情況,您都需要確保清空數據。 –

回答

3

寫完之後,您需要撥打flush以確保實際發送字節。

Connection.data.flush(); 

從文檔:

刷新此數據輸出流。這會強制任何緩衝的輸出字節 寫入流中。

DataOutputStream 的刷新方法調用其基礎輸出流的flush方法。

+0

沒有它沒有。仍寫入成功,但它讀取並停止大約100-10個字節直到結束。 – user1624309