unix/linuxの "tail -f "のJava IO実装。
2023-09-28 19:17:51
質問
Linux のコマンド "tail -f " の機能を実装するために、どのような技術やライブラリを使用すればよいのか悩んでいます。 私は本質的に、以下のようなアドオン/代替品を探しています。
java.io.FileReader
. クライアントコードは次のようなものになります。
TailFileReader lft = new TailFileReader("application.log");
BufferedReader br = new BufferedReader(lft);
String line;
try {
while (true) {
line= br.readLine();
// do something interesting with line
}
} catch (IOException e) {
// barf
}
不足しているのは
TailFileReader
. それは、追加された行と同様に、ファイルが開かれる前に存在するファイルの部分を読み取ることができるはずです。
どのように解決するのですか?
ファイルの読み取りを継続し、ファイルがさらに更新されるまで待機する機能は、コードで実現するのはそれほど難しくないはずです。ここにいくつかの疑似コードがあります。
BufferedReader br = new BufferedReader(...);
String line;
while (keepReading) {
line = reader.readLine();
if (line == null) {
//wait until there is more of the file for us to read
Thread.sleep(1000);
}
else {
//do something interesting with the line
}
}
この種の機能は、アプリケーションの他の部分に影響を与えないように、独自のスレッドに置きたいと思うでしょう。そのためには
keepReading
をセッターで公開し、メインクラスやアプリケーションの他の部分が他の頭痛の種を抱えることなく安全にスレッドをシャットダウンできるようにします。
stopReading()
などを呼び出すだけで、他の頭痛の種を抱えることなく安全にスレッドを停止することができます。
関連
-
テストが空であるかどうかを判断するためのオプションの処理
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Javaジェネリックを1つの記事で
-
-bash: java: コマンドが見つからない 解決方法
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Junitのユニットテストエラー
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
アクセス制限の解決方法: ---- in Java
-
[解決済み] Javaを使って、書き込み中のファイルから読み込むにはどうしたらいいですか?