4

Java を使用して、システム上の選択したディレクトリの変更を監視したいと考えています。Java 7 のwatchserviceについて少し考えています。しかし、watchservice は、変更イベント (MODIFY、DELETE) が発生するディレクトリ名のみを返します。一方、変更を行ったユーザー、変更が行われた時間など、変更に関するすべての情報が必要です。

それは、NTFS ファイル システムの変更ジャーナルを読みたいというようなものです。このような変更を非同期に記録するためにJavaで利用できる他の方法はありますか? ...

前もって感謝します。

4

4 に答える 4

3

プロジェクトにインポート ライブラリを追加する機能があるかどうかはわかりませんが、commons-io には、ニーズに合った FileAlterationObserver があります。

http://commons.apache.org/io/api-release/org/apache/commons/io/monitor/FileAlterationObserver.html

于 2012-04-04T09:27:09.730 に答える
3

java7 を使用している場合は、java.nio.file.FileSystemWatchServiceをご覧ください。

詳細については、Oracle チュートリアルを参照してください

于 2012-04-04T09:30:51.530 に答える
0

イベント プログラミングの例: Google Guava EventBus と Java 7 WatchService が役に立つかもしれません。私は非同期ファイル監視も試みており、これの派生物を使用する可能性があります。

または、WatchService の直接管理をスキップしたい場合は、Camel ファイル エンドポイントを試してみてください

于 2013-07-12T17:31:19.087 に答える
0

何かが起こったときに通知を受け取りたいだけの場合は、回答に投稿されたライブラリのいずれかを使用できます。

小さな例を使用して自分でそれを行いたい (そして Windows に限定されている) 場合は、Java Native Interface に関するこの記事を参照してください。ReadDirectoryChanges関数を使用すると、非同期通知を受け取るかどうかを決定できます。

誰がその変更を行ったかを本当に知る必要がある場合は、幸運を祈ります! 私が知っている限り (そして Windows のみ)、Windows はその情報を保存しないため、これは単純なトピックではありません。Object Auditingを使用して JNI 経由で取得できますが、有効にする必要があり、システムの速度が少し低下します。詳細については、この投稿をご覧ください。

于 2012-04-04T10:03:52.143 に答える