0

別のアプリケーションによって常に変更されている xml ログがあります。ただし、私の Java コードは同時に実行され、いくつかの文字列をチェックします。私は SAX パーサーを使用しています。ここで私の質問は、ファイルをループするたびに FileInputStream の新しいインスタンスを作成する必要があるかどうかです。パーサーはどうですか?

では、次のように言いましょう。

while(notfound)
{
    FileInputStream fis = new FileInputStream(new File("c:/tmp/123.xml"));
    SaxParser.parse(fis, sampleHandler);
    notFound = sampleHandler.checkIfFound();
}

ありがとう

4

1 に答える 1

1

あなたが提供した例では、ファイルの先頭から読み取りを開始するたびに newが必要になります。名前 (「ストリーム」) が示すように、クラスは「場所」の手動の配置/リセットを許可しないことがよくあります。これは、ビットが噴出するパイプにすぎません。FileInputStreamStream

クラス メソッドを使用しSaxParser.parse()て解析を開始しているため、実際に再作成するパーサー オブジェクトがあるようには見えません。したがって、を再作成するだけで問題ないはずですFileInputStream

しかし!クラスの現在のバージョンは、最初のパラメーターとしてインスタンスSaxParserを渡すことをサポートしているように見えるFileため、繰り返し使用できます。

while(notfound)
{
    SaxParser.parse(new File("c:/tmp/123.xml"), sampleHandler);
    notFound = sampleHandler.checkIfFound();
}

全体の再作成を回避しFileInputStream、パーサーがそれを処理できるようにします。

于 2012-10-11T00:46:04.383 に答える