Java FileoutputStream偶尔创建空文件

Java FileoutputStream偶尔创建空文件,java,file,fileoutputstream,Java,File,Fileoutputstream,下面的代码有时按预期工作,有时创建空文件而不写入它们,或者写入缓冲区的一部分以创建较小的文件。我做错了什么?在这里,我有时提到,因为连续的调用都会执行这两个操作。代码是从服务器下载一个文件。每次readSize显示它已经从流中读取了预期的量。但并非总是将它们写入文件中 byte[] bytes = new byte[socket.getSendBufferSize()]; long readSize = 0; int length = 0; System.out

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


在WHILE循环中添加System.out.printlinside,并检查文件是否为空。。当文件为空时,您将看不到内部,反之亦然。

数据来自何处?i、 e.插座连接到什么?您是否已在调试器中仔细检查了代码,以了解出了什么问题?