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()このメソッド内で aFileInputStreamが開かれ、最後に閉じられます。

以降ブロックnew FileInputStream(in)で囲まれていない部分があります。tryこのコードが未チェックの例外をスローする場合、入力ストリームが閉じられていない可能性があります。ただし、例外をキャッチしない場合は、入力ストリームが適切に閉じられていることを確認できます。

于 2013-07-17T14:42:54.647 に答える