ホームページ >Java >&#&チュートリアル >ソケット経由の Java ファイル転送で空のファイルが生成されるのはなぜですか?

ソケット経由の Java ファイル転送で空のファイルが生成されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 13:15:01421ブラウズ

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.write(bytes) 行を使用する必要があります:

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

これらの変更により、プログラムは意図したとおりにファイルを正しく送受信できるようになります。

以上がソケット経由の Java ファイル転送で空のファイルが生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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