文件类的"尝试使用资源"功能



我有一个场景,我试图实现Java 7 '尝试与资源'的功能。

我的finally块包含BufferedWriterFile的对象,我想使用'try with resource'特性关闭它,而不是通过显式调用close方法关闭它。

但是我在网上查了一下,看到File类不实现AutoCloseable接口,但BufferedWriter实现了。那么我该如何管理这个场景来实现"尝试使用资源"功能呢?

 try (BufferedWriter br = new BufferedWriter(new FileWriter(path))) 

使用这个简单,br将自动关闭。如。http://www.roseindia.net/java/beginners/java-write-to-file.shtml

您不需要关闭File,因为它是一个纯Java对象。它基本上只保存文件名,没有其他内容(即它不需要任何操作系统资源来构建)。

你只需要关闭你的BufferedWriter,这是正确的AutocCloseable

你不能只使用File来创建BufferedWriter, BufferedWriter需要一个Writer,它应该是这样的

    try (BufferedWriter w = new BufferedWriter(new FileWriter(new File("file")))) {
        ...
    }

try-with-resources将只在BufferedWriter上调用close。不幸的是,BufferedWriter API确实说它关闭底层的写入器,但实际上它确实关闭了。至于File,它与try-with-resources无关,因为它不是自动关闭的。

最新更新