FileoutputStream偶尔会创建空文件

时间:2012-01-22 04:20:14

标签: java file fileoutputstream

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

1 个答案:

答案 0 :(得分:0)

由于while条件为false,文件为空。

System.out.println("Inside WHILE")循环中添加while并检查文件何时为空..当文件为空时,您将看不到Inside WHILE,反之亦然。