他のアプリケーション/プロセスによって積極的に書き込まれているファイルから読み込みたいです。Javaを使用して積極的に書き込まれているファイルから読み込み[改善]
私が別の質問で見つけたこのコードは、仕事をしています:ファイルが書き込まれている間にそのファイルを読み取り、新しいコンテンツのみを読み込みます。
ファイルにデータが追加されていなくても、多くのCPUを消費するという問題。このコードをどのように最適化できますか?
- タイマーを使用しますか?またはthread.sleepを一時停止するには?
追加するもう1つのことは、書き込みしようとしているプログラム全体がファイルをリアルタイムで読み取り、その内容を処理することです。だから、これはthread.sleepかタイマーが私の全プログラムを一時停止することを意味します。私が探している理想的な改善は数秒待つことではなく、特定のイベントが発生するためです。>新しいデータが追加されます。これは可能ですか?
public class FileReader {
public static void main(String args[]) throws Exception {
if(args.length>0){
File file = new File(args[0]);
System.out.println(file.getAbsolutePath());
if(file.exists() && file.canRead()){
long fileLength = file.length();
readFile(file,0L);
while(true){
if(fileLength<file.length()){
readFile(file,fileLength);
fileLength=file.length();
}
}
}
}else{
System.out.println("no file to read");
}
}
public static void readFile(File file,Long fileLength) throws IOException {
String line = null;
BufferedReader in = new BufferedReader(new java.io.FileReader(file));
in.skip(fileLength);
while((line = in.readLine()) != null)
{
System.out.println(line);
}
in.close();
}
}
ありがとうございます。私は2つのアプリケーションに焦点を当てようとはしていません。 前述のとおり、上記のコードは通知を送信することでジョブを実行します。私が解決しようとしている問題は、スレッドが決して一時停止しないため、アプリケーションのオーバーヘッドを減らすことです。 –
ようこそ。わかりました。私は更新しました。それが有用かどうか見てみましょう – davidxxx
あなたの答えをありがとう:)。 –