实现Closeable或实现AutoCloseable
我正在学习Java,但是在implements Closeable
和implements AutoCloseable
接口上找不到任何好的解释。
当我实现an时interface Closeable
,我的Eclipse IDE创建了一个方法public void close() throws
IOException。
我可以在pw.close();
没有界面的情况下关闭流。但是,我不明白如何close()
使用接口实现该方法。而且,此接口的目的是什么?
我也想知道:如何检查是否IOstream
真的关闭?
我正在使用下面的基本代码
import java.io.*;public class IOtest implements AutoCloseable {
public static void main(String[] args) throws IOException {
File file = new File("C:\\test.txt");
PrintWriter pw = new PrintWriter(file);
System.out.println("file has been created");
pw.println("file has been created");
}
@Override
public void close() throws IOException {
}
回答:
在我看来,您对接口不是很熟悉。在您发布的代码中,您无需实现AutoCloseable
。
您仅需要(或应该)实现,Closeable
或者AutoCloseable
如果您将要实现自己的PrintWriter
,该文件将处理需要关闭的文件或任何其他资源。
在您的实现中,只需调用即可pw.close()
。您应该在finally块中执行此操作:
PrintWriter pw = null;try {
File file = new File("C:\\test.txt");
pw = new PrintWriter(file);
} catch (IOException e) {
System.out.println("bad things happen");
} finally {
if (pw != null) {
try {
pw.close();
} catch (IOException e) {
}
}
}
上面的代码与Java 6有关。在Java7中,可以更优雅地完成此操作(请参阅下答案])。
以上是 实现Closeable或实现AutoCloseable 的全部内容, 来源链接: utcz.com/qa/408159.html