-1

多かれ少なかれ次のようなコードがあります。

while(scanner.hasNext())
{
    if(scanner.findInLine("Test") !=null) {
    //do some things
    }else{
    scanner.nextLine();
    }
}

これを使用して、〜 10MB のテキスト ファイルを解析しています。問題は、while() と scanner.nextLine() にブレークポイントを設定すると、スキャナの位置 (デバッグ ウィンドウ内) がゼロに戻ることがあるということです。findInLine() の正規表現はゼロから始まり、ある程度のテキストを調べて位置を進め、ランダムにゼロに戻されるため、これがある種のループの爆発を引き起こしていると思います。 -すべてのテキストを再度解析します。

それを引き起こしている可能性のあるアイデアはありますか?私はこれを正しい方法でやっていますか?

ありがとう

いくつかの追加情報:

Scanner は InputStream からインスタンス化されます。デバッグ後、スキャナが使用する HeapCharBuffer があり、一度に 1024 文字しか許可されず、リセットされるようです。これを回避する方法、または別の方法はありますか? スキャンできる文字数が少ないようです。

デレク

4

1 に答える 1

4

とを混ぜScanner.hasNext()ていScanner.nextLine()ます。そうしないでください。トークン化の扱いが異なります。

hasNext()と一緒に使用next()するhasNextLine()nextLine()

于 2012-04-04T00:45:24.603 に答える