2013-07-17 95 views
0

我为我的项目使用nu.xom.*,链接发现在http://www.xom.nu/。我的问题是关于我的代码如下部分:Java:nu.xom.Builder是否能正确关闭文件?

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

幸运的XOM库是开源的,所以你可以去看看source代码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块所包围。如果此代码引发未检查的异常,则可能是输入流未关闭。但是,如果您没有发现异常,那么您可以确定输入流已正确关闭。