【发布时间】:2010-03-05 02:31:23
【问题描述】:
我注意到在一个 java 程序中,下面一行用于打开一个文件并处理它
BufferedReader inp = new BufferedReader(new FileReader(inputFile));
在java程序中,inp在退出程序之前没有关闭,下面的行丢失了
if (inp != null)
try {
inp.close();
} catch (IOException logOrIgnore) {}
程序在很多地方都有退出,但他们没有关闭文件。我需要把这条线放在任何地方吗?如果我在程序退出时不关闭文件,这将是一个问题。 垃圾收集器会关闭文件吗?
【问题讨论】:
-
BufferedReader 是传递给其他方法还是仅在一个位置使用?
-
“程序在很多地方都有退出”是什么意思?程序是否使用 System.exit() 终止?如果是这样,那么 try/finally 方法将不起作用。
-
在相关说明中,我有时真的希望 Java 有
using(类似于 C#)。它允许以更少的代码混乱进行确定性处理,并鼓励正确的事情。