Java アプリケーションを開発していますが、フォルダーに新しいファイルまたは新しいフォルダーが表示されるかどうかを確認する必要があります。私の問題は、Folder Watcher がフォルダー ツリーの最初のレベルでのみ変更をリッスンし、ツリー構造のすべてのサブフォルダーに新しいフォルダーが作成されているかどうかを確認する必要があることです。私の考えは、すべてのサブフォルダーにフォルダー ウォッチャーを配置することです。ファイルが作成|削除|変更されたというイベントの原因がわからないため、これがどれほど効率的かはわかりません。ファイル システムで新しいファイルが作成されたというイベントを OS が通知し、これが何らかの方法で JVM を呼び出すことを願っています。私の推測は正しいですか?フォルダー構造にファイルが作成されたことを効率的に知る方法が必要だからです。
質問する
358 次
1 に答える
3
のJavaDoc にWatchService
は次のように書かれています。
ファイル システムからのイベントを監視する実装は、利用可能な場合はネイティブ ファイル イベント通知機能に直接マップすること、またはネイティブ機能が利用できない場合はポーリングなどのプリミティブ メカニズムを使用することを目的としています。
つまり、OS がこれを実装するための効率的な方法を提供する場合は、その方法を VM で使用する必要があります。OS がそのような方法を提供しない場合は、より単純な (ただしより高価な) ポーリング メカニズムが使用されます。
そうは言っても、最近のほとんどのオペレーティング システムには必要なファイル監視 API がありますが、特定の実装は異なります。サブツリー全体を監視できるものもあれば、1 レベルの深さだけを監視できるものもあります (Java API のように)。WatcherService
これが、がデフォルトで 1 レベルの深さだけを監視する理由でもあると思われます。
于 2012-07-26T11:00:38.807 に答える