ホームページ >Java >&#&チュートリアル >Java でソケット経由でファイルを効率的に転送するにはどうすればよいですか?

Java でソケット経由でファイルを効率的に転送するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 05:52:291050ブラウズ

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) はそれをローカル ファイルに書き込みます。 file.

クライアント側の送信ロジック

クライアント側では、ファイルがバイト配列に読み取られ、データがソケット経由で送信されます。

<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 でソケット経由でファイルを効率的に転送するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。