Jusqu'ici, je sais que FileSystemWatcher peut rechercher dans un dossier et si l'un des fichiers de ce dossier est modifié, etc. modifié, nous pouvons le gérer. Mais je ne sais pas quel filtre et quel événement utiliser dans mon scénario: Surveiller un dossier, si un fichier est ajouté à ce dossier, utilisez XYZ ... Donc, dans mon scénario, je ne me soucie pas de la modification d'un fichier existant. , etc., doivent être ignorés ... ne faites XYZ que si un nouveau fichier a été ajouté à ce dossier ...
Quel événement et filtre recommandez-vous pour ce scénario?
Configurez l'observateur:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName;
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
Puis implémentez le délégué FileCreated
:
private void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
Veuillez trouver ici une explication détaillée de FileSystemWatcher: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx
Vous devrez rechercher les fichiers créés si vous souhaitez rechercher les fichiers ajoutés.
Vous spécifiez le type de modification à surveiller en définissant la valeur d'une énumération WatcherChangeType. Les valeurs possibles sont les suivantes:
Aussi, vous pouvez simplement connecter le gestionnaire d’événements qui se déclenche si un fichier est créé (ajouté) et ne pas implémenter tous les autres événements car ils ne vous intéressent pas:
watcher.Created += new FileSystemEventHandler(OnChanged);
Le code avec les commentaires ci-dessous peut, espérons-le, satisfaire vos besoins.
public void CallingMethod() {
using(FileSystemWatcher watcher = new FileSystemWatcher()) {
//It may be application folder or fully qualified folder location
watcher.Path = "Folder_Name";
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
// Only watch text files.if you want to track other types then mentioned here
watcher.Filter = "*.txt";
// Add event handlers.for monitoring newly added files
watcher.Created += OnChanged;
// Begin watching.
watcher.EnableRaisingEvents = true;
}
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e) {
// Specify what is done when a file is created with these properties below
// e.FullPath , e.ChangeType
}