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