Je souhaite détecter tous les changements de dossier dans un dossier spécifique (à l'exception des modifications de données). J'ai décidé d'utiliser System.IO.FileSystemWatcher pour gérer cela.C# Le fichier de détection se déplace dans différents dossiers
//
// fileSysWatchFile
//
this.fileSysWatchFile.EnableRaisingEvents = true;
this.fileSysWatchFile.IncludeSubdirectories = true;
this.fileSysWatchFile.NotifyFilter = System.IO.NotifyFilters.FileName;
this.fileSysWatchFile.SynchronizingObject = this;
this.fileSysWatchFile.Created += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Created);
this.fileSysWatchFile.Deleted += new System.IO.FileSystemEventHandler(this.fileSysWatchFile_Deleted);
this.fileSysWatchFile.Renamed += new System.IO.RenamedEventHandler(this.fileSysWatchFile_Renamed);
Dans la mesure du possible ... De nouveaux fichiers sont détectés. Les suppressions de fichiers sont détectées. Les noms de fichier sont détectés.
Lorsque je déplace un fichier vers un sous-dossier, il détecte d'abord une suppression de fichier puis un nouveau fichier.
Je m'attendrais à ce qu'un mouvement soit identique à un changement de nom sauf le chemin. Il semble que ce ne soit pas. Puis-je détecter les déplacements de fichiers d'une manière de sauvegarde? Par ailleurs ... Je veux seulement détecter les changements de fichiers et pas les changements de répertoire.
Edit:
Informations additionnelles pourquoi je dois détecter mouvements et ne peux pas vivre avec supprimer, créer:
Je veux rejouer les mêmes modifications sur un autre lecteur. Si j'obtiens une suppression en premier, je supprime le fichier shadow. Puis-je obtenir le créer un événement de fichier et le fichier d'origine est déjà perdu :-(.
J'ai un lecteur qui est le lecteur regardé ... Et un lecteur B qui a des fichiers avec les mêmes noms de fichiers.
Toutes les modifications de fichiers eXept changements de données doivent être rejouées sur le lecteur B.
Le problème principal est que je ne peux pas dire combien de temps il y a entre l'événement delete et l'événement create, car je ne peux pas implémenter une solution de contournement de sauvegarde en le détectant par un contrôle de chemin retardé – fpdragon
Ce serait une valeur très surprenante pour un déplacement de fichier, puisque Windows ne fait que mettre à jour le chemin du fichier, même s'il est dit que c'est un delete + create – SWeko
AFAIK FileSystemWatcher est une approche de type effort. les notifications seront abandonné silencieusement. Il est donc possible que votre application rate certains événements lorsque le système est occupé. – Daniel