¿Cómo escribir un programa en C# para monitorear si los archivos en una carpeta se han agregado, eliminado o modificado?
Cree una nueva aplicación de consola, el nombre del proyecto es "FileSystemWatcher", copie el código y podrá usarlo después de la compilación. El código es el siguiente:
using?System;
using?System.Collections.Generic;
using?System.Text;
usando ?System.IO;
usando?System.Security.Permissions;
espacio de nombres?MyFileSystemWatcher
{
público? clase?Watcher
{
público?static?void?Main(string[]?args)
{
Ejecutar() ;
p>
}
[PermissionSetAttribute(SecurityAction.Demand,?Name?=?"FullTrust")]
public?static?void ?Run()
{
cadena[]?args?=?System.Environment.GetCommandLineArgs();
if?(args.Length?! =?2)
{
Console.WriteLine("Uso:?FileSystemWatcher.exe?DirectoryPath");
return;
}
FileSystemWatcher?watcher?=?new?FileSystemWatcher();
watcher.Path?=?args[1];
/*?Set para monitorear los cambios de ?LastWrite? y? LastAccess? en el tiempo, y la creación, eliminación o cambio de nombre de archivos de texto en el directorio. ?*/
watcher.NotifyFilter?=?NotifyFilters.LastAccess?|?NotifyFilters.LastWrite
|?NotifyFilters.FileName?|?NotifyFilters.DirectoryName;
//?Solo monitorear archivos .txt
watcher.Filter?=?"*.txt";
//?Agregar controlador de eventos.
watcher.Changed?+=?new?FileSystemEventHandler(OnChanged);
watcher.Created?+=?new?FileSystemEventHandler(OnChanged);
watcher .Deleted?+=?new?FileSystemEventHandler(OnChanged);
watcher.Renamed?+=?new?RenamedEventHandler(OnRenamed);
//?Iniciar monitoreo.
watcher.EnableRaisingEvents?=?true;
//?Ingrese q para salir del programa.
Console.WriteLine("Presione ?\'q\'? para salir del programa.
");
mientras?(Console.Read()?!=?'q')?;
}
//?Definir controlador de eventos.
private?static?void?OnChanged(object?source,?FileSystemEventArgs?e)
{
//Si el archivo se cambia, crea o elimina , La ruta del archivo se enviará a la consola
Console.WriteLine("File:?"?+?e.FullPath?+?"?"?+?e.ChangeType);
}
privado?static?void?OnRenamed(object?source,?RenamedEventArgs?e)
{
//?Después del archivo se cambia el nombre, tanto la ruta anterior como la nueva se envían a la consola
Console.WriteLine("File:?{0}?renamed?to?{1}",?e.OldFullPath, ?e.FullPath) ;
}
}
}
Instrucciones de uso (ver imagen para más detalles):
1. Abra la ventana cmd, primero ubique el directorio de la carpeta donde se encuentra FileSystemWatcher.exe;
2. Ingrese el nombre del directorio de la carpeta FileSystemWatcher.exe y presione Entrar; >3. El archivo que se está monitoreando. Puede ver los resultados del monitoreo agregando, eliminando o modificando archivos en el directorio de la carpeta
.