try-with-resources
try-with-resources
是 Java 7 引入的一个新特性,主要用于自动管理资源,可以自动关闭实现了 java.lang.AutoCloseable
或者 java.io.Closeable
接口的资源。在 try 块执行完毕后,它会自动调用资源对象的 close()
方法来关闭资源。
这种方式优雅地解决了传统 try-catch-finally 语句中资源关闭的问题,使代码更加简洁、清晰。
以下是一个基本的 try-with-resources
示例:
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在这个例子中,我们创建了一个 BufferedReader
对象,并将其放在了 try 语句中。当 try 语句块执行完毕后,Java 自动调用了 br.close()
来关闭 BufferedReader
对象。这样,就不需要显式地在 finally 块中关闭 BufferedReader
对象了。
请注意,你可以在一条 try-with-resources
语句中管理多个资源,只需要用分号 ;
将它们分隔开即可。例如:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest)
) {
// 在这里使用 in 和 out
} catch(IOException e) {
// 处理异常
}
在这个例子中,我们同时管理了两个资源:InputStream in
和 OutputStream out
。当 try 语句块执行完毕后,Java 会自动先关闭 out
,再关闭 in
。