Monitorización del sistema de archivos con FileSystemWatcher

Monitorización del sistema de archivos con FileSystemWatcher

Esta clase contiene los mecanismos necesarios, que nos van a permitir la creación de objetos que actúen como observadores de los sucesos que ocurran en el sistema de archivos de un equipo local o remoto en cuanto a la creación, borrado, modificación, etc., de archivos y directorios.

La creación de este proceso de vigilancia podemos dividirla en dos partes: instanciación y configuración del propio objeto FileSystemWatcher; y la escritura de los procedimientos manipuladores de los diversos eventos que pueden ocurrir sobre los archivos y directorios.

Para facilitar la escritura de los manipuladores de evento, podemos declarar una variable de esta clase

a nivel de módulo, con la palabra clave WithEvents. Ver Código fuente 426.

Module Module1

Private WithEvents oFSW As FileSystemWatcher

Sub Main() '.... '....

Código fuente 426

Declarado el objeto FileSystemWatcher, lo instanciaremos y asignaremos valor a las propiedades mencionadas a continuación, que nos permitirán configurar el modo de observación que realizará este objeto sobre los archivos.

• Path. Tipo String. Contiene la ruta de la unidad de disco sobre la que se efectuará la monitorización.

• Filter. Tipo String. Contiene el tipo de fichero que se va a observar, admitiendo los caracteres comodín; por ejemplo: “*.*”, “*.txt”.

• IncludeSubdirectories. Tipo Boolean. Establece si se van a monitorizar los subdirectorios de la ruta especificada en la propiedad Path. El valor True incluye los subdirectorio, mientras que False no los incluye.

• EnableRaisingEvents. Tipo Boolean. Activa el proceso de observación sobre el sistema de archivos, teniendo en cuenta la configuración establecida en las demás propiedades

Programación con Visual Basic .NET © Grupo EIDOS

mencionadas arriba. El valor True pone en marcha el mecanismo de observación, mientras que el valor False lo detiene.

Veamos un ejemplo de estas propiedades en el Código fuente 427.

Sub Main() ' instanciar objeto FileSystemWatcher oFSW = New FileSystemWatcher() ' configurar objeto oFSW.Path = "C:\pruebas" oFSW.Filter = "*.txt" oFSW.IncludeSubdirectories = True

' activar oFSW.EnableRaisingEvents = True

' mientras que no pulsemos S, el objeto inspeccionará ' el sistema de archivos del equipo While (Console.ReadLine() <> "S") End While

End Sub

Código fuente 427

Para completar este proceso que estamos describiendo, sólo nos queda escribir los procedimientos que van a ejecutarse cuando se realice la creación, borrado, modificación, etc., de un archivo.

Puesto que hemos declarado la variable FileSystemWatcher a nivel del módulo de código, seleccionaremos dicha variable en la lista desplegable Nombre de clase, del editor de código. Seguidamente, abriremos la lista Nombre de método, también del editor; seleccionando el evento a codificar.

Las anteriores acciones, crearán el procedimiento de evento correspondiente, pero vacío, por lo que tendremos que escribir el código que queramos ejecutar en respuesta a tal evento. La lista de parámetros de este procedimiento consiste en un tipo Object, que contiene la referencia al objeto FileSystemWatcher que originó el evento; y un tipo FileSystemEventArgs, que contiene información adicional sobre el evento ocurrido, como el nombre y ruta del archivo.

El Código fuente 428 muestra los procedimientos de evento que se ejecutarán cuando se cree o borre un archivo.

' al crear un fichero se ejecutará este procedimiento de evento Public Sub oFSW_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles oFSW.Created

Console.WriteLine("Se ha creado un archivo : {0}", e.FullPath) End Sub

' al borrar un fichero se ejecutará este procedimiento de evento Public Sub oFSW_Deleted(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles oFSW.Deleted

Console.WriteLine("Se ha producido el borrado: {0}", e.FullPath) End Sub

Código fuente 428

© Grupo EIDOS 27. Operaciones de entrada y salida (I/O). Gestión del sistema de archivos