Есть ли что-то вроде inotify в Windows? - PullRequest
91 голосов
/ 19 августа 2010

В ОС Linux имеется подсистема ionotify, которая уведомляет приложение об изменениях в файловой системе.

Тем не менее, я в основном пользователь Windows, поэтому мне было интересно, есть ли подобный способ мониторинга изменений файловой системы?

Ответы [ 8 ]

42 голосов
/ 19 августа 2010

Если вы используете .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.

Они все немного отличаются друг от друга, и ониу всех есть сомнительная надежность в крайних случаях.В общем, вы не можете зависеть от этих API для полного просмотра всех изменений 100% времени.Большинство людей, использующих мониторинг файловой системы, комбинируют его с периодическим сканированием, чтобы компенсировать потерю или неполную информацию из push-API.

32 голосов
/ 19 августа 2010

См. API FindFirstChangeNotification или аналог .NET FileSystemWatcher

23 голосов
/ 10 января 2013
11 голосов
/ 19 августа 2010

JNotify или FileMon от Microsoft.

10 голосов
/ 17 июля 2013

Немного поздно, но ...

В Windows есть средство, похожее на события OSX, благодаря которому вы можете отслеживать события без запуска приложения.Журнал Windows USN отслеживает все изменения файлов.Джеффри Рихтер (автор Advanced Windows) написал потрясающую статью с рабочими примерами для MSDN Journal. Обновление : статья теперь на сайте archive.org, поскольку MSJ больше не подключен к MS.

Документация MSDN для журналов изменений USN.

USN Change Журналы, вероятно, лучше, если вы создаете приложения, такие как инструменты резервного копирования или индексы, которые должны отслеживать целые тома.

3 голосов
/ 15 июля 2013

FileSystemWatcher () ненадежен в основном из-за того, что обработка ошибок для буфера-наблюдателя более или менее неполна. Из-за отсутствия пути и подробной информации об обработке ошибок Microsoft не дает возможности восстановить или вручную опросить рабочий каталог.

JNotify для Windows также ненадежен, потому что эта ошибка ^ происходит из win32. JNotify использует win32. Таким образом, он ничем не отличается от FileSystemWatcher ().

1 голос
/ 19 августа 2010

Я немного искал, кажется, вспомнил, что видел нечто подобное для Windows.Есть FileSystemWatcher для .NET.Это в основном для NT или XP и вперед.

0 голосов
/ 05 марта 2013
...