jueves, 1 de marzo de 2007

Monitorizar archivos en c#

Hola a todos. Si necesitais alguna vez lanzar un método cuando se cambia, cre o elimina un archivo aquí os paso el código para realizar dicha función.

Esto lo poneis en el constructor

// ver los cambios en el directorio de la aplicaci¢n y sobre todos los archivos
FileSystemWatcher watcher = new FileSystemWatcher(System.Windows.Forms.Application.StartupPath, "*.*");
// ver el nombre del archivo y tama¤o cambiado
watcher.NotifyFilter = NotifyFilters.FileName NotifyFilters.Size;
watcher.Changed += new FileSystemEventHandler(OnChange);
watcher.Created += new FileSystemEventHandler(OnChange);
watcher.Deleted += new FileSystemEventHandler(OnChange);
watcher.Renamed += new RenamedEventHandler(OnChange);
watcher.EnableRaisingEvents = true;


Ya con esto solo teneis que crear los eventos como por ejemplo cuando se cambia un archivo.


private static void OnChange(object sender, FileSystemEventArgs e)
{
MessageBox.Show("ARCHIVO HA CAMBIADO");
}


Estos metodos son muy útiles en muchos casos.

4 comentarios:

Héctor dijo...

Muy interesante, esto me da nuevas ideas y en breve tendré que utilizarlo, así que un post estupendo.

Anónimo dijo...

brillante que buen post le dare un buen uso como administrador =)

ricardo.cabra dijo...

Hola, muy interesante el ejemplo,
pero tengo un problema, a cambio de mostrar el cambio en un messagebox, lo quiero mostrar en un richtexbox... pero me marca error

"Operación no válida a través de subprocesos: Se tuvo acceso al control 'richTextBox1' desde un subproceso distinto a aquel en que lo creó."

Adanciux dijo...

Excelente post, me ha servido muchísimo en el desarrollo de un traductor de EDIs XML