0

我正在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让我印象深刻,所以我自己不确定它是否正确关闭了文件。

任何人都可以对此有所了解吗?

问候。

4

1 回答 1

0

幸运的是 XOM 库是开源的,所以你可以看看代码nu.xom.Builder.build(File)

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如果此代码引发未经检查的异常,则输入流可能未关闭。但是,如果您没有捕获异常,那么您可以确定输入流已正确关闭。

于 2013-07-17T14:42:54.647 回答