2009-07-08 5 views
25

私はファイルシステムの変更について私に通知できるJavaライブラリを探しています。フリーウェアまたはオープンソースのJava用の洗練されたファイルシステムモニタはありますか?

無料のライブラリがいくつか見つかりましたが、すべてが無差別な検出、つまり定期的なポーリングを使用しています。そして、他のものは常に商業です。

は私が探しているのWin32、Linux用FAMと何でも他のOSで利用可能であるため、OSからファイル監視機能を使用するライブラリ、すなわち FindFirstChangeNotificationです。ブルートフォースがフォールバックとして使用されるのであれば気にしないが、WindowsとLinuxでは利用可能なOS機能を使用するべきである。

+2

これはプログラミングサイトであるため、この質問は話題にならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Software Recommendations Stack Exchange](https://softwarerecs.stackexchange.com/)がより良い場所になるだろう。 – jww

+0

Java 7は[WatchService](https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html)を導入しました。 –

答えて

25

JNotifyあなたが必要としているようです。

ファイルシステムをポーリング(たとえば、更新時間の変更のためのディレクトリ)しても、システムに重大な負荷がかからず、値引きしないでください。 Tomcatなどのアプリは、これを使用して問題の少ないホットデプロイメントを管理します。

これは大したことではありませんが、今後のJava 7には正確にWatchServiceがあります。

4

なぜJavaでなければならないのですか?

プラットフォーム固有のAPIを使用するライブラリにはネイティブコードが必要です。したがって、本質的にライブラリは異なるAPIの使用法を透過的にするネイティブコードの周りのラッパーになります。

ライブラリを見つけられない場合は、呼び出し時に無差別に使用するか、プラットフォームごとにJNIを使​​用してネイティブAPIを呼び出す必要があります。

+0

はい、それは基本的にそのようなライブラリ、ラッパーとなるでしょう。しかし、私はそれのようなものが既に存在することを望んでいた。 (それは存在しますが、フリー/オープンソースではありません) –

7

Javaの欠点に取り組んでいらっしゃいましたら、Java 7に出てくるJSR 203: More New I/O APIs別名nio2をご覧ください。

が 属性をファイルに一括アクセスをサポートする新しいファイル・システム・インターフェース、変更通知は、 エスケープするファイルシステム固有のAPI、 と プラグイン可能なファイルシステムの実装のためのサービス・プロバイダー・インターフェース。

6

jpathwatchが別のオプションです。ディレクトリ監視用のJava 7のAPIを実装しているので、必要に応じてJava 7への移植が容易です。両方のプロジェクトが大規模なアクティブなコミュニティを持っているので

しかし、彼らはおそらくに将来的に更新されます:は現在使用ポーリング

0

つ以上のオプションJava 7 WatchService(FileSystem.newWatchService())をサポートしています。です。もしあれば、通知機能があります。

両方のライブラリは、他のさまざまなトランスポートおよびシステムと統合するための有用な抽象レイヤーを提供するため、メインアプリケーションコードはファイルシステムからの入力に依存しません。

+1

downvoteを説明するコメントは役に立ちます... – Raman

関連する問題