はじめに
ファイル変更の検出は、ファイルなどのさまざまなアプリケーションにとって不可欠です。監視、バックアップ システム、データ同期。従来のポーリング手法は非効率的である可能性がありますが、Java ではより最適なソリューションが利用可能です。
ポーリングとイベントベースのモニタリング
ポーリングでは、ファイルの lastModified プロパティを繰り返しクエリする必要があります。 。ただし、このアプローチは、特に複数のファイルを監視する場合にリソースを大量に消費する可能性があります。
Java 7 の NIO.2 WatchService API
Java 7 では WatchService API が導入されました。イベントベースのファイル変更検出を提供します。この API を使用すると、開発者は特定のファイルまたはディレクトリを監視用に登録でき、変更が発生したときにアプリケーションに通知します。
WatchService の使用法を示すコード スニペットは次のとおりです。
import java.nio.file.*; public class FileChangeListener { public static void main(String[] args) throws IOException { Path directory = Paths.get("/path/to/directory"); try (WatchService watcher = FileSystems.getDefault().newWatchService()) { directory.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY); boolean keepWatching = true; while (keepWatching) { WatchKey key = watcher.take(); for (WatchEvent<?> event : key.pollEvents()) { if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) { System.out.println("File modified: " + event.context()); } } if (!key.reset()) { keepWatching = false; } } } } }
このコード特定のディレクトリの監視サービスを設定し、変更をリッスンします。ファイルが変更されると、メッセージが出力されます。
イベント ベースの監視の利点
イベント ベースのファイル変更監視には、ポーリングに比べていくつかの利点があります。
以上がJava の NIO.2 WatchService API はファイル変更の監視をどのように強化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。