Java でファイルの変更を監視し、ファイルを更新して読み取る方法

JavaはJava NIOパッケージのWatchServiceクラスを使用してファイルの変化を監視し、Java IO、またはJava NIOを使用してファイルを読み取ることができます。

WatchServiceを使ってファイル変更を監視する基本的な方法:

  1. WatchServiceオブジェクトを作成し、監視するディレクトリを登録する:
Path directory = Paths.get("path/to/directory");
WatchService watchService = FileSystems.getDefault().newWatchService();
directory.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
  1. ファイルイベントを監視するために、無限ループを開始します
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 などの他のイベントも登録できます。

bannerAds