Java如何close
关闭资源的方法
在Java中,关闭资源(如文件、数据库连接、网络连接等)是确保程序正确释放系统资源的关键步骤。以下是几种常见的关闭资源的方法。
使用try-catch-finally手动关闭
传统的关闭资源方法是在finally块中手动调用close()方法,确保资源无论是否发生异常都会被关闭。

FileInputStream fis = null;
try {
fis = new FileInputStream("file.txt");
// 使用资源
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用try-with-resources自动关闭
Java 7引入了try-with-resources语法,自动关闭实现了AutoCloseable接口的资源。这种方式更简洁且安全。
try (FileInputStream fis = new FileInputStream("file.txt")) {
// 使用资源
} catch (IOException e) {
e.printStackTrace();
}
关闭数据库连接
数据库连接(如JDBC)也需要显式关闭,可以使用try-with-resources或手动关闭。

try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table")) {
// 处理结果集
} catch (SQLException e) {
e.printStackTrace();
}
关闭网络连接
网络连接(如Socket或ServerSocket)也需要关闭,避免资源泄漏。
try (Socket socket = new Socket("host", port)) {
// 使用socket
} catch (IOException e) {
e.printStackTrace();
}
使用工具类关闭资源
某些工具类(如Apache Commons IO的IOUtils)提供了便捷的关闭方法。
InputStream is = null;
try {
is = new FileInputStream("file.txt");
// 使用资源
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(is); // 静默关闭,不抛出异常
}
注意事项
- 确保资源在使用完毕后立即关闭,避免资源泄漏。
- 使用
try-with-resources时,资源必须实现AutoCloseable接口。 - 手动关闭资源时,注意处理
close()方法可能抛出的异常。 - 对于需要关闭多个资源的情况,建议使用嵌套的
try-with-resources或按顺序关闭。





