0

クライアントがDataInputStreamを使用して送信するファイルを受信し、それをファイルに書き込もうとしています。

(クライアントはDataInputStream write(byte []、len、off)メソッドを使用してファイルを送信します)

これが私がやろうとしている方法ですが、完全なデータを受信しません。

InputStream in = s.getInputStream(); //s is Socket that is connected.
BufferedInputStream bis = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bis);

FileOutputStream fos = new FileOutputStream(directory+"/"+filename);

byte b = din.readByte();
while(b != -1){
fos.write(b);
b = din.readByte();
}

上記の実装はエレガントではないかもしれないことを私は知っています。

しかし、私はJavaを初めて使用するので、悪いスタイルについてはご容赦ください。

(あなたが知っているなら、あなたがより良いものを推薦するならば、私は本当に感謝します)

結果ファイルはわずか4KBですが、401KBである必要があります

コードを機能させるには、このコードをどのように修正する必要がありますか?

どうもありがとうございます。

4

1 に答える 1

2

あなたはバイトを読んでいて、-1(バイトにキャスト)は有効なバイト値です。-1で停止したくないが、代わりにEOFExceptionをキャッチする必要があります。

標準のInputStream.read()メソッドの1つ(intではなくを返す)を使用する場合は、-1をテストしますbyte

于 2011-10-05T02:54:58.730 に答える