Java OSGi サービスで Apache JCI の FAM (FileAlterationMonitor) を使用して、FileSystem の変更を監視および処理しています。サービスを開始するたびに (以下のコードを使用して FAM を開始します)、FAM はディレクトリに存在するすべての変更を取得します。
現在、私は /tmp を見ています /tmp にはサブツリーが含まれています: /tmp/foo/bar/cat/dog
サービスを開始して FAM を開始するたびに、以下の DirectoryCreate イベントが報告されます。
/tmp/foo
/tmp/foo/bar
/tmp/foo/bar/cat
/tmp/foo/bar/cat/dog
そのサブツリーのどの部分にも変更が加えられていない場合でも。
サービスのアクティベーション時に実行されるコード:
File watchFolder = new File("/tmp");
watchFolder.mkdirs();
fam = new FilesystemAlterationMonitor();
fam.setInterval(1000);
fam.addListener(watchFolder, listener);
fam.start();
// I've already tried adding:
listener.waitForFirstCheck();
リスナーの例:
private FileChangeListener listener = new FileChangeListener() {
public void onDirectoryChange(File pDir) { System.out.println(pDir.getAbsolutePath()); }
public void onDirectoryCreate(File pDir) { System.out.println(pDir.getAbsolutePath()); }
...
}