Java 7では、ファイルシステムを継続的に監視するためにWatchService
が導入されました。 Java 6のバックポートはありますか?WatchService for Java 6
同様の機能を持つ純粋なJavaライブラリはありますか?
Java 7では、ファイルシステムを継続的に監視するためにWatchService
が導入されました。 Java 6のバックポートはありますか?WatchService for Java 6
同様の機能を持つ純粋なJavaライブラリはありますか?
はい、もちろんです。 Apache VFSはまさにこれを行います。あなたはhttp://commons.apache.org/vfs/の下にそれを見つけることができます。これは、ファイルを監視することができ、純粋なJavaのライブラリだと、それを使用するのは非常に簡単です:
FileSystemManager manager = VFS.getManager();
FileObject file= manager.resolveFile("c:/MyFile.txt");
DefaultFileMonitor fm = new DefaultFileMonitor(new MyListener());
fm.setDelay(5000);
fm.addFile(file);
fm.start();
上記のコードでは、ファイルcを監視します:/MyFile.txt。変更された場合、オブジェクトMyListener()が呼び出されます。
Jetbrains IntelliJ IDEAのコンポーネント 'Virtual File System'は、元のファイルシステムウォッチャーを起動して、元のファイルシステムの変更をIDEAに戻すよう通知します。 2年間、Jetbrainsはコンポーネントを含むべきオープンソース版をリリースしている。これはJava 6で動作します。FAQ pageで請求されているApache 2.0ライセンスの下でリリースされています。FAQ page
このための純粋なJavaライブラリは不可能です。ポーリングを避けるには、ネイティブコンポーネントが必要です。
http://wiki.netbeans.org/NativeFileNotificationsは、利用可能なネイティブAPIとそれらをラッピングするさまざまなJavaライブラリの両方に関する情報を提供します。
DefaultFileMonitorはポーラーではないようですが、ポーリングなしでOSからの通知を受け取るWatchServiceと同等ではありません。 –