3

Javaでファイルへの変更を検出する最も効率的な方法は何ですか?

ファイルのポーリングについて読んだことがありますが、ポーリングのアプローチには、監視するファイルの数が増えるにつれて明らかになる多くの欠点があります。私はむしろポーリングを使用しませんが、オンラインの多くのソリューションは、推奨される方法としてファイル ポーリングを指しているようです。代わりに、おそらく OS 関連のファイル システム アップデート コールバック ソリューションを期待していましたが、これは Linux と Windows の両方で可能ですか?

現在、2 つのファイルのみを「監視」するつもりであることを考えると、ファイル ポーリング ソリューションに対してまだオープンです。理想的には、ファイル ポーリングがパフォーマンスに大きな影響を与えないことを願っています。

Java 7 の WatchService は知っていますが、7 が正式にリリースされていないため、そのアプローチや JNI ライブラリの使用をためらっています。

とても有難い!

編集:ファイルポーリングが進むべき道のようです。ファイル ポーリングを実装するための最も安全で効率的な方法を誰かが推奨できれば、それは素晴らしいことです。

4

2 に答える 2

3

利用可能な2つのライブラリは次のとおりです。

Java 7 NIO2もいくつかの機能があるかもしれません(現時点で、これらの機能がJava 7の範囲内にあるかどうかはわかりません)JSR203としても利用可能です。こちらを参照してください。

于 2010-10-08T18:29:43.680 に答える
1

ファイルが変更されたときに OS に通知させる Java ソリューションはありません。ネイティブ呼び出しで可能かもしれませんが、その点では各 OS が異なり、Java ではサポートされていません。可能であれば、JNIを使​​用した多くのカスタムコーディングが必要になります。

ポーリング ソリューションを使用すると、更新日をポーリングする限り、かなり迅速に処理されます。ファイルへの参照を長時間開いたままにしないでください。競合が発生しないように、ポーリング サイクル間では常にそれらを閉じてください。

于 2010-10-08T18:25:06.077 に答える