下面的代码有时会按预期工作,有时会创建空文件而不写入文件或写入部分缓冲区创建较小的文件。我在这做错了什么?在这里我有时会提到,因为连续调用会执行其中任代码是从服务器下载文件。每次readSize显示它已从流中读取预期的数量。但并不总是将它们写入文件中。
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
条件为false,文件为空。
在System.out.println("Inside WHILE")
循环中添加while
并检查文件何时为空..当文件为空时,您将看不到Inside WHILE
,反之亦然。