我有一个场景,我正在尝试使用Java 7'尝试使用资源'功能。
我的finally块包含BufferedWriter
和File
的对象,我想使用'try with resource'功能关闭它,而不是通过显式调用close方法来关闭它。
但是我在网上查看并发现File
类没有实现AutoCloseable
接口,但是BufferedWriter
。那么如何管理这个场景来实现“试用资源”功能呢?
答案 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。