在Java中对资源的读写最后要进行close操作,那么应该放在try还是finally中呢?以下是三种处理方式:
第1种:把close()放在try中
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(
"out.txt", true)));
pw.println("This is a test.");
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
第2种:把close()放在finally中
PrintWriter pw = null;
try {
pw = new PrintWriter(
new BufferedWriter(
new FileWriter("out.txt", true)));
pw.println("This is a test.");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(pw != null) {
pw.close();
}
}
第3种:使用try-with-resource语句
try (PrintWriter pw = new PrintWriter(
new BufferedWriter(
new FileWriter("out.txt", true)))) {
pw.println("This is a test.");
} catch (IOException e) {
e.printStackTrace();
}
那么哪一种方法是对的或者说是最好的呢?
无论是否有异常发生close()方法都应该被调用,因此close()应放在finally中。而从Java 7开始,可以使用try-with-resource语句。