忘记在使用Java PrintWriter将数组写入文件时添加close(),数组的最后部分将被省略。这是为什么?

时间:2014-05-06 09:04:27

标签: java arrays printwriter

我注意到在使用Java的PrintWriter类将数组写入文件时我并不知道。当我忘记最后添加close()时,数组的最后一个元素没有打印到文件中。那是为什么?

代码摘要

...
PrintWriter f;
try {
    f = new PrintWriter(new FileWriter("out.txt"));
    for (int i = 0; i < array.length; i++) { // array consists of 5000+ birthnames
        f.println(array[i]);
    }
    f.close(); // Last elements of array will not be printed to out.txt if this line is removed
} catch (IOException e) {
    System.out.println("Exception: " + e);
}

1 个答案:

答案 0 :(得分:2)

close()

方法将关闭数据流,并将管道中剩余的所有数据刷新到输出。因此,如果您不调用close()方法,则不会发生刷新,并且资源仍处于锁定状态。在GC运行之后,它可能会找到未关闭的流,它会突然关闭它,你没有一个机制来刷新数据输出(没有输出!)