Rumah >Java >javaTutorial >Bagaimana untuk Memindahkan Fail dengan Cekap melalui Soket di Java?

Bagaimana untuk Memindahkan Fail dengan Cekap melalui Soket di Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 05:52:291050semak imbas

How to Efficiently Transfer Files over Sockets in Java?

Pemindahan Fail melalui Soket dalam Java

Pemindahan fail merentasi soket memerlukan menukar fail kepada tatasusunan bait, menghantarnya dan menyusunnya semula pada penerima tamat. Panduan ini menangani kerumitan yang dihadapi dalam proses ini.

Logik Penerimaan Bahagian Pelayan

Pelayan mewujudkan pendengar soket, menerima sambungan masuk dan memulakan aliran data untuk komunikasi . Langkah kritikal ialah membaca bait yang diterima dan menyimpannya ke fail setempat:

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

Kaedah in.read(bait) mendapatkan semula data masuk, manakala fos.write(bait) menulisnya kepada tempatan fail.

Logik Penghantaran Sisi Pelanggan

Di sisi klien, fail dibaca ke dalam tatasusunan bait, dan data kemudiannya dihantar melalui soket:

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

Kaedah out.write(bait) menghantar bait fail yang ditukar ke pelayan.

Peningkatan Penyalinan Strim

Walau bagaimanapun, menggunakan baca dan kaedah menulis secara langsung boleh menjadi tidak cekap. Sebaliknya, InputStream dan OutputStream menyediakan kaedah transferTo untuk pemindahan data yang lebih pantas:

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

Teknik ini mengautomasikan proses penyalinan bait dan meningkatkan prestasi dengan ketara.

Atas ialah kandungan terperinci Bagaimana untuk Memindahkan Fail dengan Cekap melalui Soket di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn