2011-11-01 13 views
16

Java 7では、ファイルシステムを継続的に監視するためにWatchServiceが導入されました。 Java 6のバックポートはありますか?WatchService for Java 6

同様の機能を持つ純粋なJavaライブラリはありますか?

答えて

15

はい、もちろんです。 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()が呼び出されます。

+16

DefaultFileMonitorはポーラーではないようですが、ポーリングなしでOSからの通知を受け取るWatchServiceと同等ではありません。 –

4

Jetbrains IntelliJ IDEAのコンポーネント 'Virtual File System'は、元のファイルシステムウォッチャーを起動して、元のファイルシステムの変更をIDEAに戻すよう通知します。 2年間、Jetbrainsはコンポーネントを含むべきオープンソース版をリリースしている。これはJava 6で動作します。FAQ pageで請求されているApache 2.0ライセンスの下でリリースされています。FAQ page

5

このための純粋なJavaライブラリは不可能です。ポーリングを避けるには、ネイティブコンポーネントが必要です。

http://wiki.netbeans.org/NativeFileNotificationsは、利用可能なネイティブAPIとそれらをラッピングするさまざまなJavaライブラリの両方に関する情報を提供します。

関連する問題