質問

ディレクトリウォッチャーであるJava 7の素晴らしい機能を見ました。ディレクトリを投票せずにディレクトリで何かが変更されたときにわかります。

1.)しかし、ファイルシステムが変更イベントの登録をサポートしていない場合、ポーリングに戻ると言います。すべての典型的なLinuxおよびWindowsファイルシステム(Extx、NTFS、Reiserxxx、JSF、ZFS)はこの機能をサポートしていますか?

2.)ディレクトリ内のファイルの名前を作成したイベントまたは変更イベントですか?それとも、1つを削除して作成しますか? 1つのシステムでテストできますが、すべてのファイルシステムで同じになりますか?

役に立ちましたか?

解決

あなたが話しているようです WatchService.

の文言 entry_create イベントによれば、新しいファイルが作成された場合、またはファイルがディレクトリに変更された場合、新しいエントリが知覚されると述べています。ファイルの名前が変更され、同じディレクトリに残っている場合、どのイベントが起動されるかの仕様がありません。

また、この文言は、サービスがオペレーティングシステムに基づいているか投票に基づいているかどうかが実装に依存していると述べています。それがJREによる実装であると思われるので、特定のOSがサポートしていることを知っていても、サービスがOSレベルの機能を使用したり、ポーリングに訴えたりすることは保証ではありません。実際、このサービスは、ポーリングを使用しているのかOSレベルの機能を使用しているのかを伝える方法を提供しません。

APIが定義する操作は、リスナーのように動作しません。 WatchServiceは自動ウォッチングを行いますが、発生するイベントのリストを取得するには、サービスから見たイベントを手動でリクエストする必要があります。新しいイベントが存在する場合、自動的に呼び出されるフックを提供しないようです。

他のヒント

WindowsやLinuxでプレイすると、動作に多くの違いが表示されます。したがって、Javaは、一貫したプラットフォームに独立した抽象化を提供しようとはしていません。気になるOSでアプリをテストする必要があります(まあ、2つしかありません)。

WatchServiceは、あなたが想像できる以上に吸います。あなたが本当にそれに飛び込むならば、フラストレーションの準備をしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top