我注意到在使用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);
}
答案 0 :(得分:2)
close()
方法将关闭数据流,并将管道中剩余的所有数据刷新到输出。因此,如果您不调用close()
方法,则不会发生刷新,并且资源仍处于锁定状态。在GC
运行之后,它可能会找到未关闭的流,它会突然关闭它,你没有一个机制来刷新数据输出(没有输出!)