Leer en inglés

Compartir vía


FileSystemWatcher.Changed Evento

Definición

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

C#
public event System.IO.FileSystemEventHandler? Changed;
C#
public event System.IO.FileSystemEventHandler Changed;
C#
[System.IO.IODescription("FSW_Changed")]
public event System.IO.FileSystemEventHandler Changed;

Tipo de evento

Atributos

Ejemplos

En el ejemplo siguiente se usa el Changed evento para mostrar la ruta de acceso del archivo a la consola cada vez que se cambia el archivo inspeccionado.

C#
using System;
using System.IO;

namespace MyNamespace
{
    class MyClassCS
    {
        static void Main()
        {
            using var watcher = new FileSystemWatcher(@"C:\path\to\folder");

            watcher.NotifyFilter = NotifyFilters.Attributes
                                 | NotifyFilters.CreationTime
                                 | NotifyFilters.DirectoryName
                                 | NotifyFilters.FileName
                                 | NotifyFilters.LastAccess
                                 | NotifyFilters.LastWrite
                                 | NotifyFilters.Security
                                 | NotifyFilters.Size;

            watcher.Changed += OnChanged;
            watcher.Created += OnCreated;
            watcher.Deleted += OnDeleted;
            watcher.Renamed += OnRenamed;
            watcher.Error += OnError;

            watcher.Filter = "*.txt";
            watcher.IncludeSubdirectories = true;
            watcher.EnableRaisingEvents = true;

            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }

        private static void OnChanged(object sender, FileSystemEventArgs e)
        {
            if (e.ChangeType != WatcherChangeTypes.Changed)
            {
                return;
            }
            Console.WriteLine($"Changed: {e.FullPath}");
        }

        private static void OnCreated(object sender, FileSystemEventArgs e)
        {
            string value = $"Created: {e.FullPath}";
            Console.WriteLine(value);
        }

        private static void OnDeleted(object sender, FileSystemEventArgs e) =>
            Console.WriteLine($"Deleted: {e.FullPath}");

        private static void OnRenamed(object sender, RenamedEventArgs e)
        {
            Console.WriteLine($"Renamed:");
            Console.WriteLine($"    Old: {e.OldFullPath}");
            Console.WriteLine($"    New: {e.FullPath}");
        }

        private static void OnError(object sender, ErrorEventArgs e) =>
            PrintException(e.GetException());

        private static void PrintException(Exception? ex)
        {
            if (ex != null)
            {
                Console.WriteLine($"Message: {ex.Message}");
                Console.WriteLine("Stacktrace:");
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine();
                PrintException(ex.InnerException);
            }
        }
    }
}

Comentarios

El Changed evento se genera cuando se realizan cambios en el tamaño, los atributos del sistema, la hora de última escritura, la hora de último acceso o los permisos de seguridad de un archivo o directorio en el directorio que se está supervisando.

Nota

Las operaciones comunes del sistema de archivos pueden generar más de un evento. Por ejemplo, cuando un archivo se mueve de un directorio a otro, se pueden generar varios OnChanged y algunos OnCreated eventos y OnDeleted . Mover un archivo es una operación compleja que consta de varias operaciones simples, por lo que genera varios eventos. Del mismo modo, algunas aplicaciones (por ejemplo, software antivirus) pueden provocar eventos adicionales del sistema de archivos detectados por FileSystemWatcher.

Use NotifyFilter para restringir el número de notificaciones generadas cuando se controla este evento.

Nota

El Changed evento se genera inesperadamente cuando se cambia el nombre de un archivo, pero no se genera cuando se cambia el nombre de un directorio. Para watch para cambiar el nombre, use el Renamed evento .

Nota

El orden en el que se genera el Changed evento en relación con los demás FileSystemWatcher eventos puede cambiar cuando la SynchronizingObject propiedad no nulles .

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también