ホームページ >Java >&#&チュートリアル >ソケット経由の Java ファイル転送で空のファイルが生成されるのはなぜですか?
ソケット経由の 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 サイトの他の関連記事を参照してください。