首頁  >  文章  >  Java  >  為什麼我透過套接字進行 Java 檔案傳輸會產生空檔案?

為什麼我透過套接字進行 Java 檔案傳輸會產生空檔案?

Linda Hamilton
Linda Hamilton原創
2024-11-04 13:15:01323瀏覽

Why is My Java File Transfer Over Sockets Generating an Empty File?

透過套接字傳輸Java 檔案:解決損壞的檔案問題

您的Java 程式旨在透過套接字在客戶端和伺服器之間傳輸檔案。但是,伺服器目前正在產生一個空文件。為了修正這個問題,讓我們檢查伺服器和客戶端程式碼。

伺服器程式碼:

從伺服器程式碼開始,問題源自於讀取檔案位元組一旦使用 in.read(bytes)。如果檔案很大,此方法可能無法捕獲所有位元組。相反,我們應該循環讀取位元組:

<code class="java">int count;
byte[] buffer = new byte[8192]; // or 4096, or more
while ((count = in.read(buffer)) > 0) {
    fos.write(buffer, 0, count);
}</code>

客戶端程式碼:

接下來,在客戶端程式碼中,您實際上並沒有寫入文件位元組到輸出流out。應使用 out.write(bytes) 行:

<code class="java">out.write(bytes);</code>

透過這些修改,程式應如預期般正確傳送和接收檔案。

以上是為什麼我透過套接字進行 Java 檔案傳輸會產生空檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn