我正在使用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
,所以我自己也不确定它是否正确关闭文件。
有人可以对此有所了解吗?
问候。
答案 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
块包围。如果此代码抛出未经检查的异常,则可能未关闭输入流。但是如果您没有捕获异常,那么您可以确定输入流已正确关闭。