В ОС Linux есть подсистема ionotify, которая уведомляет приложение об изменениях в файловой системе.
Однако я в основном пользователь Windows, поэтому мне было интересно, есть ли аналогичный способ отслеживания изменений файловой системы?
В ОС Linux есть подсистема ionotify, которая уведомляет приложение об изменениях в файловой системе.
Однако я в основном пользователь Windows, поэтому мне было интересно, есть ли аналогичный способ отслеживания изменений файловой системы?
Ответы:
См. API FindFirstChangeNotification или аналог .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.
Все они слегка отличаются друг от друга, и все они имеют сомнительную надежность в крайних случаях. В общем, вы не можете полагаться на эти API для получения полного представления обо всех изменениях в 100% случаев. Большинство людей, использующих мониторинг файловой системы, сочетают его с периодическим сканированием, чтобы компенсировать потерянную или неполную информацию из push api.
взгляните на это: inotify-win, порт инструмента inotifywait для Windows
а также это: inotify-tools
Немного поздно, но ...
В Windows есть функция, аналогичная событиям OSX, благодаря которой вы можете отслеживать события, не запуская приложение. Журнал Windows USN Journal отслеживает все изменения файлов. Джеффри Рихтер (автор Advanced Windows) написал потрясающую статью с рабочими примерами для MSDN Journal. Обновление : статья теперь с archive.org, поскольку MSJ больше не в сети MS.
Документация MSDN для журналов изменений USN.
Журналы изменений USN, вероятно, лучше подходят, если вы создаете такие приложения, как инструменты резервного копирования или индексы, которым необходимо отслеживать целые тома.
FileSystemWatcher
| FindFirstChangeNotification
PhillipBrandonHolmes было говорить о ?
FileSystemWatcher () ненадежен в основном из-за того, что обработка ошибок для буфера наблюдателя более или менее неполная. Из-за отсутствия пути и подробной информации об обработке ошибок Microsoft не дает вам возможности восстановить или вручную опросить рабочий каталог.
JNotify для Windows также ненадежен, потому что эта ошибка ^ происходит от win32. JNotify использует win32. Итак, он ничем не отличается от FileSystemWatcher ().
Я немного поискал, мне кажется, я видел что-то подобное для Windows. Для .NET есть FileSystemWatcher . Это в основном для NT или XP и далее.
попробуйте библиотеку уведомлений о файлах Java