实现Closeable或实现AutoCloseable

我正在学习Java,但是在implements Closeableimplements 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

回到顶部