Linux OSには、ファイルシステムへの変更をアプリケーションに通知するionotifyサブシステムがあります。
しかし、私は主にWindowsユーザーですので、ファイルシステムの変更を監視する同様の方法があるかどうか疑問に思っていましたか?
FindFirstChangeNotification API、または.NETの同等物 FileSystemWatcher を参照してください。
。netを使用している場合は、FileSystemWatcher
を使用します。詳細はこちら: http://msdn.Microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
[〜#〜] c [〜#〜]を使用している場合は、FindFirstChangeNotification
、FindNextChangeNotification
、 ReadDirectoryChangesW
。詳細はこちら: http://msdn.Microsoft.com/en-us/library/aa365261(VS.85).aspx
[〜#〜] osx [〜#〜]では、関連するAPIはfsevents
apiです。
これらはすべて微妙に異なり、Edgeのケースでは疑わしい信頼性があります。一般に、すべての変更を完全に表示するためにこれらのAPIに依存することはできません。ファイルシステム監視を使用するほとんどの人は、定期的なスキャンと組み合わせて、Push APIからの失われた情報や不完全な情報を補正します。
これを見てください: inotify-win、Windows用のinotifywaitツールのポート
また、これ: inotify-tools
少し遅れましたが...
WindowsにはOSXイベントに似た機能があり、アプリを実行せずにイベントを監視できます。 Windows USN Journalは、すべてのファイル変更を追跡します。 Jeffrey Richter(Advanced Windowsの著者)は、MSDN Journalのサンプルを使用して 素晴らしい記事 を書きました。 Update: article MSJがMSでオンラインでなくなったため、現在archive.orgから。
ボリューム全体を監視する必要があるバックアップツールやインデックスなどのアプリケーションを構築している場合、USN変更ジャーナルはおそらく優れています。
FileSystemWatcher()は、主にウォッチャーバッファーのエラー処理がほぼ不完全であるため、信頼性がありません。パスと詳細なエラー処理情報が不足しているため、Microsoftでは、作業ディレクトリを回復したり、手動でポーリングしたりする方法は提供していません。
このバグはwin32に由来するため、JNotify for Windowsも信頼できません。 JNotifyはwin32を使用します。そのため、FileSystemWatcher()と違いはありません。
私は少し検索をしましたが、Windowsでも似たようなものを見たことを覚えているようです。 .NETには FileSystemWatcher があります。主にNTまたはXP and forward。
try Javaファイル通知ライブラリ