Java によるファイル変更の監視
システム内のファイル変更の検出は、さまざまなアプリケーションにとって重要なタスクです。ただし、ファイルの lastModified プロパティを単にポーリングするだけでは、パフォーマンスに影響するため、最適な解決策とは言えません。
幸いなことに、Java 7 では、NIO.2 の一部として WatchService API が導入されており、特にアプリケーションにファイルの変更を通知するように設計されています。イベント。この API は、ファイルを監視するためのより効率的で信頼性の高い方法を提供します。
WatchService を使用すると、WatchService インスタンスにディレクトリを登録し、ファイルの作成など、通知を受け取りたいイベントの種類を指定できます。削除、または変更。該当するイベントが発生すると、WatchService はこれらのイベントをリッスンしているスレッドを起動し、変更されたファイルに関する情報を提供します。
WatchService の使用方法の例を次に示します。
Path dir = Paths.get("/path/to/directory"); WatchService watchService = FileSystems.getDefault().newWatchService(); WatchKey key = dir.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE); // Start a thread to listen for events ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.submit(() -> { try { for (;;) { WatchKey keyFromPoll = watchService.take(); for (WatchEvent<?> event : keyFromPoll.pollEvents()) { System.out.println("Event occurred: " + event.kind()); System.out.println("Context (file affected): " + event.context()); } keyFromPoll.reset(); } } catch (InterruptedException e) { System.err.println("Error: " + e.getMessage()); } });
このコードは、WatchService にディレクトリを登録し、ファイル変更イベントを継続的にリッスンするスレッドを開始します。イベントが発生すると、スレッドが起動し、影響を受けるファイルに関する情報を取得し、コンソールに出力します。
WatchService を利用することで、パフォーマンスを低下させることなく、応答性の高い効率的な方法でファイルの変更を効果的に監視できます。ポーリングに関連するオーバーヘッド。
以上がJava でファイルの変更を効率的に監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。