Есть ли что-нибудь вроде inotify на Windows?
с ОС Linux существует подсистема ionotify, которая уведомляет приложение об изменениях в файловой системе.
тем не менее, я в основном пользователь Windows, поэтому мне было интересно, есть ли подобный способ мониторинга изменений файловой системы?
8 ответов:
посмотреть 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(против.85).аспнOn OSX, соответствующий api является
fsevents
api.все они слегка отличаются друг от друга, и все они имеют сомнительную надежность в крайних случаях. В общем, вы не можете зависеть от этих API для полного представления всех изменений 100% времени. Большинство людей, использующих мониторинг файловой системы, объединяют его с периодическими проверками для компенсации потерянной или неполной информации из push api.
взгляните на это: inotify-win, порт инструмента inotifywait для Windows
и так: inotify-tools
немного поздно, но ...
Windows имеет средство, подобное событиям OSX, с помощью которого вы можете отслеживать события без запуска приложения. Журнал Windows USN отслеживает все изменения файлов. Джеффри Рихтер (автор Advanced Windows) написал потрясающая статья с рабочими образцами для журнала MSDN.
документация MSDN для журналов изменений USN.
журналы изменений USN, вероятно, лучше, если вы создаете такие приложения, как средства резервного копирования или индексы, необходимые для мониторинга целых томов.
FileSystemWatcher () ненадежен в основном из-за того, что его обработка ошибок для буфера наблюдателя более или менее неполная. Из-за отсутствия пути и подробных сведений об обработке ошибок Корпорация Майкрософт не позволяет восстановить или вручную опросить рабочий каталог.
JNotify для Windows также ненадежен, потому что эта ошибка ^ происходит от win32. JNotify использует win32. Таким образом, он ничем не отличается от FileSystemWatcher().
Я сделал немного поиска, я, кажется, припоминаю что-то подобное для Windows. Есть FileSystemWatcher for. NET. Its главным образом для NT или XP и вперед.
попробовать Библиотека Уведомлений Java-Файлов