FileSystemWatcher.Path Propiedad

Definición

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

C#
public string Path { get; set; }
C#
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[System.IO.IODescription("FSW_Path")]
public string Path { get; set; }
C#
[System.IO.IODescription("FSW_Path")]
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Path { get; set; }
C#
[System.IO.IODescription("FSW_Path")]
[System.ComponentModel.SettingsBindable(true)]
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Path { get; set; }
C#
[System.ComponentModel.SettingsBindable(true)]
public string Path { get; set; }

Valor de propiedad

La ruta de acceso que se va a supervisar. El valor predeterminado es una cadena vacía ("").

Atributos

Excepciones

La ruta de acceso especificada no existe o no se encuentra.

o bien

La ruta de acceso especificada contiene caracteres comodín.

o bien

La ruta de acceso especificada contiene caracteres de ruta de acceso no válidos.

Ejemplos

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

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

Se trata de una ruta de acceso completa a un directorio. Si la IncludeSubdirectories propiedad es true, este directorio es la raíz en la que el sistema supervisa los cambios; de lo contrario, es el único directorio observado. Para watch un archivo específico, establezca la Path propiedad en el directorio completo, correcto y la Filter propiedad en el nombre de archivo.

La Path propiedad admite rutas de acceso de convención de nomenclatura universal (UNC).

Nota

Esta propiedad debe establecerse para que el componente pueda watch para los cambios.

Cuando se cambia el nombre de un directorio, se FileSystemWatcher vuelve a asociar automáticamente al elemento recién cambiado. Por ejemplo, si establece la Path propiedad en "C:\Mis documentos" y, a continuación, cambia manualmente el nombre del directorio a "C:\Your Documents", el componente sigue escuchando las notificaciones de cambio en el directorio recién cambiado. Sin embargo, cuando se solicita la Path propiedad , contiene la ruta de acceso antigua. Esto sucede porque el componente determina qué directorio supervisa en función del identificador, en lugar del nombre del directorio. El cambio de nombre no afecta al identificador. Por lo tanto, si destruye el componente y, a continuación, vuelve a crearlo sin actualizar la propiedad, se producirá un error en la Path aplicación porque el directorio ya no existe.

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