1

重複の可能性:
Java を使用して、アクティブに書き込まれているファイルから読み取るにはどうすればよいですか?

ファイルの末尾に文字列を追加するプログラム(トラップレシーバー)があります。このプログラムは基本的に、実行するすべてをログに記録します。

プログラムにそのログ ファイルを読み取らせたい。これを行うとどのような問題に直面する可能性があり、これを行う最も効率的な方法は何ですか。別のプロセスがファイルを更新している間にファイルを読み取る。

4

1 に答える 1

1

このロガーは、ほとんどのロガーと同様に、あらゆる種類の文字列を追加するだけでなく、行全体を追加するとします。

何もない場合は単純に bufferedReader を使用して待つことができます:

BufferedReader br = new BufferedReader(new FileReader("path"));
String line;
while (true) {
    line = br.readLine();
    if (line != null) {
        // do something
    } else {
        Thread.sleep(DELAY);   // DELAY could be 100 (ms) for example     
    }
}

もちろん、アプリケーションで実行する他のタスクがある場合は、別のスレッドでこれを行う必要があります。

非常にまれなロギングの場合にプルを避けたい場合は、監視サービスを使用できますが、単純なファイルで試したことはなく、常に信頼できるかどうかはわかりません.

于 2012-10-03T08:12:45.203 に答える