下面的代码有时会按预期工作,有时会创建空文件而不写入它们或写入缓冲区的一部分以创建较小的文件。我在这里做错了什么?在这里我有时会提到,因为连续调用会执行其中任何一个。该代码是从服务器下载文件。每次 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();