Java:nu.xom.Builder是否正确关闭了文件?

时间:2013-07-17 13:53:38

标签: java file xom

我正在使用nu.xom.*作为我的项目,链接位于http://www.xom.nu/。我的问题是关于我的代码的以下部分:

private void open() {
    builder = new Builder();
    try {
        document = builder.build(file);
    } catch (ParsingException | IOException ex) {
        Logger.getLogger(InvoiceData.class.getName()).log(Level.SEVERE, null, ex);
    }
}

我的程序中有一些不需要的文件锁,我实际上检查了打开文件的所有地方。现在让我感到震惊的是builder.build(File file)确实实现了Closeable,所以我自己也不确定它是否正确关闭文件。

有人可以对此有所了解吗?

问候。

1 个答案:

答案 0 :(得分:0)

幸运的是,XOM库是开源的,因此您可以查看nu.xom.Builder.build(File)的{​​{3}}代码:

public Document build(File in) 
  throws ParsingException, ValidityException, IOException {

    InputStream fin = new FileInputStream(in);
    // [...]
    String base = url.toString();
    try {
        Document doc = build(fin, base);
        return doc;
    }
    finally {   
        fin.close();
    }

}

因此,您将File实例传递给build()方法,在此方法中,FileInputStream会在最后打开并关闭。

new FileInputStream(in)之后有一个部分未被try块包围。如果此代码抛出未经检查的异常,则可能未关闭输入流。但是如果您没有捕获异常,那么您可以确定输入流已正确关闭。