Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase FileSystemWatcher

 

Publicado: octubre de 2016

Escucha las notificaciones de cambio del sistema de archivos y genera eventos cuando cambia un directorio o un archivo de un directorio.

Para examinar el código fuente de .NET Framework para este tipo, vea la Reference Source.

Espacio de nombres:   System.IO
Ensamblado:  System (en System.dll)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.IO.FileSystemWatcher

[IODescriptionAttribute("FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class FileSystemWatcher : Component, ISupportInitialize

NombreDescripción
System_CAPS_pubmethodFileSystemWatcher()

Inicializa una nueva instancia de la clase FileSystemWatcher.

System_CAPS_pubmethodFileSystemWatcher(String)

Inicializa una nueva instancia de la clase FileSystemWatcher, dado el directorio especificado que se va a supervisar.

System_CAPS_pubmethodFileSystemWatcher(String, String)

Inicializa una nueva instancia de la clase FileSystemWatcher, dado el directorio especificado y el tipo de archivos que se van a supervisar.

NombreDescripción
System_CAPS_protpropertyCanRaiseEvents

Obtiene un valor que indica si el componente puede provocar un evento.(Heredado de Component).

System_CAPS_pubpropertyContainer

Obtiene IContainer que contiene Component.(Heredado de Component).

System_CAPS_protpropertyDesignMode

Obtiene un valor que indica si la Component está actualmente en modo de diseño.(Heredado de Component).

System_CAPS_pubpropertyEnableRaisingEvents

Obtiene o establece un valor que indica si el componente está habilitado.

System_CAPS_protpropertyEvents

Obtiene la lista de controladores de eventos que se adjuntará a este Component.(Heredado de Component).

System_CAPS_pubpropertyFilter

Obtiene o establece la cadena de filtro utilizada para determinar qué archivos se supervisan en un directorio.

System_CAPS_pubpropertyIncludeSubdirectories

Obtiene o establece un valor que indica si se deben supervisar los subdirectorios de la ruta de acceso especificada.

System_CAPS_pubpropertyInternalBufferSize

Obtiene o establece el tamaño (en bytes) del búfer interno.

System_CAPS_pubpropertyNotifyFilter

Obtiene o establece el tipo de cambios que se van a inspeccionar.

System_CAPS_pubpropertyPath

Obtiene o establece la ruta de acceso del directorio que se va a inspeccionar.

System_CAPS_pubpropertySite

Obtiene o establece una interfaz ISite para el objeto FileSystemWatcher.(Invalida Component.Site).

System_CAPS_pubpropertySynchronizingObject

Obtiene o establece el objeto utilizado para serializar las llamadas del controlador de eventos emitidas como consecuencia de un cambio de directorio.

NombreDescripción
System_CAPS_pubmethodBeginInit()

Comienza la inicialización de un objeto FileSystemWatcher empleado en un formulario o utilizado por otro componente. La inicialización se produce en tiempo de ejecución.

System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Component.(Heredado de Component).

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa FileSystemWatcher y libera los recursos administrados de forma opcional.(Invalida Component.Dispose(Boolean)).

System_CAPS_pubmethodEndInit()

Termina la inicialización de un objeto FileSystemWatcher empleado en un formulario o utilizado por otro componente. La inicialización se produce en tiempo de ejecución.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Libera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el elemento Component durante la recolección de elementos no usados.(Heredado de Component).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodGetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.(Heredado de Component).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodOnChanged(FileSystemEventArgs)

Genera el evento Changed.

System_CAPS_protmethodOnCreated(FileSystemEventArgs)

Genera el evento Created.

System_CAPS_protmethodOnDeleted(FileSystemEventArgs)

Genera el evento Deleted.

System_CAPS_protmethodOnError(ErrorEventArgs)

Genera el evento Error.

System_CAPS_protmethodOnRenamed(RenamedEventArgs)

Genera el evento Renamed.

System_CAPS_pubmethodToString()

Devuelve un String que contiene el nombre de la Component, si existe. Este método no se debe invalidar.(Heredado de Component).

System_CAPS_pubmethodWaitForChanged(WatcherChangeTypes)

Un método sincrónico que devuelve una estructura que contiene información específica acerca del cambio que se ha producido, dado el tipo de cambio que desea supervisar.

System_CAPS_pubmethodWaitForChanged(WatcherChangeTypes, Int32)

Método sincrónico que devuelve una estructura que contiene información específica acerca del cambio que se ha producido, dado el tipo de cambio que desea supervisar y el tiempo (en milisegundos) que se va a esperar antes de que se agote el tiempo de espera.

NombreDescripción
System_CAPS_pubeventChanged

Se produce cuando cambia un archivo o un directorio en la ruta de acceso Path especificada.

System_CAPS_pubeventCreated

Se produce cuando se crea un archivo o un directorio en la ruta de acceso Path especificada.

System_CAPS_pubeventDeleted

Se produce cuando se elimina un archivo o un directorio en la ruta de acceso Path especificada.

System_CAPS_pubeventDisposed

Se produce cuando el componente se elimina mediante una llamada a la Dispose (método).(Heredado de Component).

System_CAPS_pubeventError

Se produce cuando la instancia de FileSystemWatcher no puede continuar supervisando los cambios o cuando el búfer interno se desborda.

System_CAPS_pubeventRenamed

Se produce cuando se cambia de nombre un archivo o un directorio de la ruta de acceso Path especificada.

System_CAPS_noteNota

Para ver el código fuente de .NET Framework para este tipo, consulte el Reference Source. Puede examinar el código fuente en línea, descargue la referencia para verla sin conexión y recorrer (incluidas las revisiones y actualizaciones) durante la depuración; see instructions.

Use FileSystemWatcher para inspeccionar los cambios en un directorio especificado. Puede ver los cambios en archivos y subdirectorios del directorio especificado. Puede crear un componente para inspeccionar archivos en un equipo local, una unidad de red o un equipo remoto.

Para inspeccionar cambios en todos los archivos, establezca la Filter propiedad en una cadena vacía ("") o utilice caracteres comodín ("*. *"). Para inspeccionar un archivo específico, establezca la Filter en el nombre de archivo. Por ejemplo, para inspeccionar cambios en el archivo MyDoc.txt, establezca el Filter propiedad en "MyDoc.txt". También puede ver los cambios en un determinado tipo de archivo. Por ejemplo, para inspeccionar cambios en archivos de texto, establezca la Filter propiedad en "*.txt".

Hay varios tipos de cambios que se puede ver en un archivo o directorio. Por ejemplo, puede ver los cambios en Attributes, el LastWrite fecha y hora, o la Size de archivos o directorios. Esto se hace estableciendo el NotifyFilter propiedad en uno de los NotifyFilters valores. Para obtener más información sobre el tipo de cambios que puede ver, consulte NotifyFilters.

Puede ver el cambio de nombre, eliminación o la creación de archivos o directorios. Por ejemplo, para inspeccionar el cambio de nombre de archivos de texto, establezca la Filter propiedad en "*.txt" y llame a la WaitForChanged método con un Renamed en su parámetro.

El sistema operativo Windows notifica al componente los cambios en el archivo en un búfer creado por el FileSystemWatcher. Si hay muchos cambios en poco tiempo, el búfer puede desbordarse. Esto hace que el componente a perder el seguimiento de cambios en el directorio y sólo puede proporcionar una notificación general. Aumentar el tamaño del búfer con el InternalBufferSize propiedad es costosa, ya que procede de la memoria no paginada que no se puede intercambiar en el disco, por lo que mantener el búfer lo más pequeño de todavía grande suficiente para no perder cualquier archivo de eventos de cambio. Para evitar un desbordamiento de búfer, utilice el NotifyFilter y IncludeSubdirectories notificaciones de cambio de propiedades, por lo que puede filtrar los no deseados.

Para obtener una lista de valores de propiedad iniciales de una instancia de FileSystemWatcher, consulte el FileSystemWatcher constructor.

Tenga en cuenta lo siguiente cuando utilice la FileSystemWatcher clase.

  • Los archivos ocultos no se omiten.

  • En algunos sistemas, FileSystemWatcher informa de los cambios a los archivos con el formato de nombre corto de 8.3 archivo. Por ejemplo, un cambio en "longfilename.LongExtension", éste podría aparecer como "LongFil ~. LON".

  • Esta clase contiene una petición de vínculo y una petición de herencia en el nivel de clase que se aplica a todos los miembros. Un SecurityException se produce cuando el llamador inmediato o la clase derivada no tiene permiso de plena confianza. Para obtener más información acerca de las peticiones de seguridad, consulte Link Demands.

  • El tamaño máximo que puede establecer para el InternalBufferSize propiedad para supervisar un directorio a través de la red es 64 KB.

System_CAPS_noteNota

Ejecutando FileSystemWatcher no se admite en Windows 98.

El sistema operativo y FileSystemWatcher objeto interpretar una acción de cortar y pegar o una acción de desplazamiento como una acción de cambio de nombre de una carpeta y su contenido. Si corta y pega una carpeta con archivos en una carpeta que se está inspeccionada, el FileSystemWatcher objeto notifica solo la carpeta como nuevo, pero no su contenido, ya que básicamente son sólo cambia.

Para recibir una notificación que el contenido de las carpetas se han movido o copiado en una carpeta controlada, proporcionar OnChanged y OnRenamed métodos de controlador de eventos tal como se sugiere en la siguiente tabla.

Controlador de eventos

Eventos administrados

Realiza

OnChanged

Changed, Created, Deleted

Notificar los cambios en los atributos de archivo, archivos creados y archivos eliminados.

OnRenamed

Renamed

Enumerar las rutas de antiguas y nuevas de los archivos y carpetas, expande de forma recursiva si es necesario.

Tenga en cuenta que varios factores pueden afectar a eventos de cambio de sistema de archivos que se generan, como se describe en la siguiente:

  • Las operaciones comunes de sistema de archivos pueden generar más de un evento. Por ejemplo, cuando se mueve un archivo de un directorio a otro, varios OnChanged y algunos OnCreated y OnDeleted se produzcan eventos. Cambio de que un archivo es una operación compleja que consta de varias operaciones sencillas y, por tanto, se provocan varios eventos. De forma similar, algunas aplicaciones (por ejemplo, software antivirus) pueden provocar eventos del sistema de archivo adicionales que son detectados por FileSystemWatcher.

  • La FileSystemWatcher puede inspeccionar discos siempre y cuando no se cambian o se quitan. El FileSystemWatcher no genera eventos para CDs y DVDs, porque no se pueden cambiar las propiedades y marcas de tiempo. Equipos remotos deben tener una de las plataformas necesarias instaladas para que el componente funcione correctamente.

  • Si hay varios FileSystemWatcher hay objetos inspeccionando la misma ruta UNC en Windows XP antes del Service Pack 1 o Windows 2000 SP2 o anterior, sólo uno de los objetos provocará un evento. En equipos que ejecutan Windows XP SP1 y versiones más recientes, Windows 2000 SP3 o posterior o Windows Server 2003, todos los FileSystemWatcher objetos genera los eventos adecuados.

Tenga en cuenta que un FileSystemWatcher puede perder un evento cuando se supera el tamaño del búfer. Para evitar la pérdida de eventos, siga estas instrucciones:

  • Aumentar el tamaño del búfer estableciendo la InternalBufferSize propiedad.

  • Evite inspeccionar archivos con nombres de archivo largos, porque un nombre de archivo largo contribuye a que se llene el búfer. Considere la posibilidad de cambiar el nombre de estos archivos con nombres más cortos.

  • Mantener el código lo más corta posible de control de eventos.

En el ejemplo siguiente se crea un FileSystemWatcher para inspeccionar el directorio especificado en tiempo de ejecución. El componente se establece para inspeccionar los cambios en LastWrite y LastAccess de tiempo, la creación, la eliminación o cambio de nombre de archivos de texto en el directorio. Si un archivo se cambia, crea o elimina, la ruta de acceso al archivo se imprime en la consola. Cuando se cambia el nombre de un archivo, las rutas de acceso anteriores y nuevos aparecen en la consola.

Utilice la System.Diagnostics y System.IO espacios de nombres para este ejemplo.

using System;
using System.IO;
using System.Security.Permissions;

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* 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.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}

SecurityPermission

for calling members of T:System.Diagnostics.ProcessStartInfo. Demand value: F:System.Security.Permissions.SecurityAction.LinkDemand; Named Permission Sets: FullTrust.

For a sample that uses the T:System.IO.FileSystemWatcher class, see Using a FileSystemWatcher Component in a Windows Formhttp://code.msdn.microsoft.com/Using-a-FileSystemWatcher-4bc97af4

SecurityPermission

for deriving from the T:System.Diagnostics.ProcessStartInfo class. Demand value: F:System.Security.Permissions.SecurityAction.InheritanceDemand; Named Permission Sets: FullTrust.

.NET Framework
Disponible desde 1.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: