Java try-with-resources
Java 关闭资源
在使用文件、流或其他资源时,务必在使用后关闭它们。如果您忘记关闭资源,它可能会持续占用内存,甚至阻止您再次打开该文件,直到程序结束。
注意:您尚未详细学习文件和流。这些主题将在后续章节中介绍。现在,请专注于try-with-resources的工作原理。
在旧代码中,您必须通过调用close()方法来手动关闭"资源":
示例
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileOutputStream output = new FileOutputStream("filename.txt");
output.write("Hello".getBytes());
output.close(); // 必须手动关闭
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("Error writing file.");
}
}
}
运行示例 »
Java try-with-resources
从 Java 7 开始,您可以使用 try-with-resources。它是 try 的一种特殊形式,专门用于处理资源(例如 文件 和 流)。资源声明在 try(...) 括号内,Java 会在代码块执行完毕后自动关闭该资源——即使发生错误。
Example (try-with-resources)
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// 资源在 try() 内部打开
try (FileOutputStream output = new FileOutputStream("filename.txt")) {
output.write("Hello".getBytes());
// 这里不需要调用 close()
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("Error writing file.");
}
}
}
为什么要使用 try-with-resources?
- 更安全 - 即使发生异常,资源也始终会被关闭。
- 更简洁 - 无需编写
close()调用。 - 更短的代码 - 更少的样板代码,更易于阅读。
经验法则:无论何时处理文件、流或数据库连接,都应使用 try-with-resources 语句来确保它们已正确关闭。
下一步: 了解如何在 Java 中处理文件。

