2013-07-17 7 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. Если этот код генерирует неконтролируемое исключение, возможно, что входной поток не закрыт. Но если вы не поймаете исключение, вы можете быть уверены, что входной поток закрыт должным образом.