c# - ejemplo - ¿Qué filtro de FileSystemWatcher necesito usar para encontrar nuevos archivos?
filesystemwatcher windows service c# (2)
Configura el observador:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName;
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
Luego implementa el delegado de FileCreated
:
private void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
Hasta ahora sé que FileSystemWatcher puede buscar en una carpeta y si alguno de los archivos dentro de esa carpeta se modifica, modifica, .etc ... entonces podemos manejarlo. Pero no estoy seguro de qué filtro y evento debo usar en mi escenario: vigilar una carpeta, si se agrega un archivo a esa carpeta, haga XYZ ... Así que en mi escenario no me importa si se cambia un archivo existente , etc..se deben ignorar ... solo hacer XYZ si y solo si un nuevo archivo ha sido agregado a esa Carpeta ...
¿Qué evento y filtro recomienda para este escenario?
Consulte aquí una explicación detallada de FileSystemWatcher: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx
Tendrá que buscar los archivos creados si desea buscar archivos agregados.
Para especificar el tipo de cambio a observar, configure el valor de una enumeración WatcherChangeType. Los valores posibles son los siguientes:
- Todos: la creación, eliminación, cambio o cambio de nombre de un archivo o carpeta.
- Cambiado: El cambio de un archivo o carpeta. Los tipos de cambios incluyen: cambios de tamaño, atributos, configuración de seguridad, última escritura y última hora de acceso.
- Creado: La creación de un archivo o carpeta.
- Eliminado: la eliminación de un archivo o carpeta.
- Renombrado: el cambio de nombre de un archivo o carpeta.
También puede conectar el controlador de eventos que se activa si se crea un archivo (agregado) y no implementar todos los demás eventos, ya que no son interesantes para usted:
watcher.Created += new FileSystemEventHandler(OnChanged);