Java でファイルの変更を監視し、ファイルを更新して読み取る方法
JavaはJava NIOパッケージのWatchServiceクラスを使用してファイルの変化を監視し、Java IO、またはJava NIOを使用してファイルを読み取ることができます。
WatchServiceを使ってファイル変更を監視する基本的な方法:
- WatchServiceオブジェクトを作成し、監視するディレクトリを登録する:
Path directory = Paths.get("path/to/directory");
WatchService watchService = FileSystems.getDefault().newWatchService();
directory.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
- ファイルイベントを監視するために、無限ループを開始します
while (true) {
WatchKey key;
try {
key = watchService.take();
} catch (InterruptedException e) {
e.printStackTrace();
return;
}
for (WatchEvent<?> event : key.pollEvents()) {
if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
Path modifiedFile = (Path) event.context();
System.out.println("Modified file: " + modifiedFile);
// 读取文件内容
try {
List<String> lines = Files.readAllLines(directory.resolve(modifiedFile));
// 处理文件内容
} catch (IOException e) {
e.printStackTrace();
}
}
}
key.reset();
}
上記のコードでは、ファイル変更イベントを監視した場合に、変更されたファイルのパスが出力され、Files.readAllLinesメソッドによりファイルの内容が読み込まれます。状況に応じて、ファイルの内容をさらに処理できます。
上記コードはファイルの変更イベント(ENTRY_MODIFY)のみウォッチしていますが、ニーズに応じて、ENTRY_CREATE や ENTRY_DELETE などの他のイベントも登録できます。