“尝试使用资源”功能用于File类

时间:2013-05-02 11:47:41

标签: java file-io try-catch java-7

我有一个场景,我正在尝试使用Java 7'尝试使用资源'功能。

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

但是我在网上查看并发现File类没有实现AutoCloseable接口,但是BufferedWriter。那么如何管理这个场景来实现“试用资源”功能呢?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

您不需要关闭File,因为它是纯Java对象。它基本上只保存文件的名称,没有别的(即它不需要任何OS资源来构建)。

您只需关闭BufferedWriter即可正确AutocCloseable

答案 2 :(得分:0)

您无法仅使用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无关,因为它不是Autocloseable。