web-dev-qa-db-fra.com

Existe-t-il quelque chose comme inotify sur Windows?

Avec le système d'exploitation Linux, il existe le sous-système ionotify qui notifie une application des modifications apportées au système de fichiers.

Cependant, je suis principalement un utilisateur de Windows, donc je me demandais s'il y avait une façon similaire de surveiller les modifications du système de fichiers?

91
johansson

Voir FindFirstChangeNotification API, ou l'équivalent .NET FileSystemWatcher

32
nos

Si vous utilisez . Net , utilisez FileSystemWatcher. Plus d'informations ici: http://msdn.Microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

Si vous utilisez [~ # ~] c [~ # ~] , utilisez FindFirstChangeNotification, FindNextChangeNotification, ReadDirectoryChangesW. Plus d'informations ici: http://msdn.Microsoft.com/en-us/library/aa365261 (VS.85) .aspx

Sur [~ # ~] osx [~ # ~] , l'api pertinente est l'api fsevents.

Ils sont tous subtilement différents les uns des autres, et ils ont tous une fiabilité douteuse dans les cas Edge. En général, vous ne pouvez pas dépendre de ces API pour une vue complète de toutes les modifications 100% du temps. La plupart des utilisateurs de la surveillance du système de fichiers l'associent à des analyses périodiques pour compenser les informations perdues ou incomplètes de l'API Push.

42
blucz
23
remo

JNotify ou FileMon de Microsoft.

11
Eugene

Un peu tard mais ...

Windows dispose d'une fonction similaire aux événements OSX grâce à laquelle vous pouvez surveiller les événements sans exécuter d'application. Le Journal Windows USN conserve une trace de toutes les modifications de fichiers. Jeffrey Richter (auteur d'Advanced Windows) a écrit un article formidable avec des exemples de travail pour MSDN Journal. Mise à jour : article maintenant depuis archive.org car MSJ n'est plus en ligne sur MS.

Documentation MSDN pour USN Change Journals.

Les journaux de modification USN sont probablement meilleurs si vous créez des applications telles que des outils de sauvegarde ou des index qui doivent surveiller des volumes entiers.

10
Peter Krnjevic

FileSystemWatcher () n'est pas fiable, principalement en raison du fait que la gestion des erreurs pour le tampon de surveillance est plus ou moins incomplète. En raison d'un manque de chemin et d'informations détaillées sur la gestion des erreurs, Microsoft ne vous donne aucun moyen de récupérer ou d'interroger manuellement le répertoire de travail.

JNotify pour Windows n'est pas fiable non plus car ce bogue ^ dérive de win32. JNotify utilise win32. Donc, ce n'est pas différent de FileSystemWatcher ().

3

J'ai fait un peu de recherche, je crois me souvenir d'avoir vu quelque chose de similaire pour Windows. Il y a FileSystemWatcher pour .NET. C'est principalement pour NT ou XP et avant.

1
Pharaun
0
lifei