2012-01-22 7 views
0

以下のコードは期待どおりに動作することがありますが、それ以外の場合は空のファイルが作成されずに作成されます。私はここで何をやったのですか?ここで私は時々言及した。コードは、サーバーからファイルをダウンロードすることです。 readSizeが示すごとに、期待される量をストリームから読み込んでいます。しかし、必ずしもそれらがファイルに書き込まれているとは限りません。 while条件が偽であるようFileoutputStreamで空のファイルを作成することがあります

byte[] bytes = new byte[socket.getSendBufferSize()]; 

    long readSize = 0; 
    int length = 0; 
    System.out.println(fileSize); 
    while (readSize < fileSize 
      && (length = socket.getInputStream().read(bytes)) != -1) { 

     fileOutputStream.write(bytes, 0, length); 
     readSize += length; 
     fileOutputStream.flush(); 
    } 

    fileOutputStream.flush(); 
    fileOutputStream.close(); 
    socket.close(); 
+0

データはどこから来ますか?つまり、ソケットは何に接続していますか?何が間違っているかを見るためにデバッガのコードを踏んだことはありますか? –

答えて

0

ファイルは空です。

whileループ内 System.out.println("Inside WHILE")を追加して、ファイルが空の場合、ファイルが空であり、その逆のとき..あなたが Inside WHILEは表示されません確認してください。

関連する問題