首頁 >Java >java教程 >Java中如何透過Socket高效傳輸檔案?

Java中如何透過Socket高效傳輸檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 05:52:291049瀏覽

How to Efficiently Transfer Files over Sockets in Java?

Java 中透過套接字的檔案傳輸

跨套接字的檔案傳輸需要將檔案轉換為位元組數組,它們,並在接收端重新建構它們結尾。本指南解決了此過程中遇到的複雜性。

伺服器端接收邏輯

伺服器建立套接字偵聽器,接受傳入連線並初始化資料流以進行通訊。關鍵步驟是讀取接收到的位元組並將其儲存到本機檔案:

<code class="java">byte[] bytes = new byte[1024];
in.read(bytes);
FileOutputStream fos = new FileOutputStream("C:\test2.xml");
fos.write(bytes);</code>

in.read(bytes) 方法會擷取傳入的數據,而fos.write(bytes) 將其寫入本地文件。

客戶端發送邏輯

在客戶端,檔案被讀入位元組數組,然後透過套接字發送資料:

<code class="java">File file = new File("C:\test.xml");
long length = file.length();
byte[] bytes = new byte[(int) length];
// ...
out.write(bytes);</code>

out.write(bytes) 方法將轉換後的檔案位元組傳送到伺服器。

流複製改進

但是,使用 read直接寫入方法可能效率低。相反,InputStream 和OutputStream 提供了transferTo 方法以實現更快的資料傳輸:

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

此技術可自動執行位元組複製過程並顯著提高效能。

以上是Java中如何透過Socket高效傳輸檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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