2017-03-02 10 views
-1

コードをデバッグしているときに、whileループが終了していないことに気付きました。それはちょうど立ち往生ですか?FileInputStreamを読み込んでいる間に奇妙なループが発生する

修正するには、System.out.println(fis.read(buffer));をループに追加するしかありませんでした。

これはループ

 while(fis.read(buffer) > 0) { 
     System.out.println(fis.read(buffer)); 
     dos.write(buffer); 
     } 

なぜこれが起こっている上の任意のアイデアですか? ループ内でfis.readを呼び出す必要はありますか?

+0

あなたは反復ごとに2回読み込んでいます... –

+0

私はそれをやっています。しかし、2回目の読書がなければ、ループはちょうど立ち往生します。 –

答えて

2

これは、あなたが何をする必要があるかです:

while (fis.read(buffer) != -1) { 
    System.out.println(buffer); 
    dos.write(buffer); 
} 

あなたはreadメソッドを複数回calingとjavadocのあたりとされている、それはブロック、いくつかの入力が(プログラムがハング理由です)利用可能になるまで。

はバイトの 配列にこの入力ストリームからデータのバイトをのb.lengthまでを読み込み:これは、javadocが言うことです。このメソッドは、入力が使用可能になるまでブロックします。

+0

ループ中にありがとう、ありがとうございます。しかし、問題を理解しました。それは、サーバーがファイルを保存していないためでした... –

関連する問題