W systemie Linux istnieje podsystem ionotify, który powiadamia aplikację o zmianach w systemie plików.
Jednak jestem głównie użytkownikiem systemu Windows, więc zastanawiałem się, czy istnieje podobny sposób monitorowania zmian w systemie plików?
W systemie Linux istnieje podsystem ionotify, który powiadamia aplikację o zmianach w systemie plików.
Jednak jestem głównie użytkownikiem systemu Windows, więc zastanawiałem się, czy istnieje podobny sposób monitorowania zmian w systemie plików?
Odpowiedzi:
Zobacz FindFirstChangeNotification API lub odpowiednik .NET FileSystemWatcher
Jeśli używasz .net , użyj FileSystemWatcher
. Więcej informacji tutaj: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
Jeśli używasz C , wykorzystywania FindFirstChangeNotification
, FindNextChangeNotification
, ReadDirectoryChangesW
. Więcej informacji tutaj: http://msdn.microsoft.com/en-us/library/aa365261(VS.85).aspx
W systemie OSX odpowiednim interfejsem API jest fsevents
api.
Wszystkie nieznacznie się od siebie różnią i wszystkie mają wątpliwą niezawodność w skrajnych przypadkach. Ogólnie rzecz biorąc, nie można polegać na tych interfejsach API, aby uzyskać pełny obraz wszystkich zmian w 100% przypadków. Większość osób korzystających z monitorowania systemu plików łączy je z okresowymi skanami, aby zrekompensować utracone lub niekompletne informacje z interfejsu API push.
spójrz na to: inotify-win, port narzędzia inotifywait dla systemu Windows
a także to: inotify-tools
Trochę późno, ale ...
System Windows ma funkcję podobną do zdarzeń OSX, dzięki której można monitorować zdarzenia bez uruchamiania aplikacji. Dziennik USN systemu Windows śledzi wszystkie zmiany plików. Jeffrey Richter (autor Advanced Windows) napisał wspaniały artykuł z działającymi przykładami dla MSDN Journal. Aktualizacja : artykuł z archive.org, ponieważ MSJ nie jest już online w MS.
Dokumentacja MSDN dotycząca dzienników zmian USN.
Dzienniki zmian USN są prawdopodobnie lepsze, jeśli tworzysz aplikacje, takie jak narzędzia do tworzenia kopii zapasowych lub indeksy, które muszą monitorować całe woluminy.
FileSystemWatcher
| FindFirstChangeNotification
PhillipBrandonHolmes został mówiąc ?
Funkcja FileSystemWatcher () jest zawodna, głównie ze względu na fakt, że obsługa błędów bufora obserwatora jest mniej więcej niekompletna. Ze względu na brak ścieżki i szczegółowych informacji dotyczących obsługi błędów firma Microsoft nie daje możliwości odzyskania ani ręcznego sondowania katalogu roboczego.
JNotify dla Windows jest również zawodny, ponieważ ten błąd ^ pochodzi z win32. JNotify używa win32. Tak więc nie różni się od FileSystemWatcher ().
Trochę szukałem, wydaje mi się, że widziałem coś podobnego dla Windows. Istnieje FileSystemWatcher dla .NET. Jest przeznaczony głównie dla NT lub XP i do przodu.
wypróbuj Java File Notification Library