2012-10-09 14 views
40

Cuando trato de establecer la ruta de observador en un solo archivo, así:Uso FileSystemWatcher en un único archivo en C#

watcher.Path = filePath1; 

me sale el error:

The directory name C:\Cromos 3.0\repository\diagnostics\dwm01_2011_06_13__09_03.LXD is invalid. 

Puede usted sólo se establece la ruta a un directorio de carpetas?

+0

vigilante.Filtro hará lo que necesite. – Jay

+0

@Charleh, no estoy seguro de estar de acuerdo con eso, ya que FileSystemWatcher también proporciona un evento modificado, por lo que es posible que desee saber cuándo se cambia un archivo específico. –

+1

Ok, eso es verdad, hace tiempo que no lo uso. Estoy bastante seguro de haber leído que a veces puede no ser confiable cuando se agregan/eliminan grandes cantidades de cambios/archivos, etc. – Charleh

Respuesta

79

Su error está estableciendo la propiedad Path con un nombre de archivo completo

watcher.Path = Path.GetDirectoryName(filePath1); 
watcher.Filter = Path.GetFileName(filePath1); 

debería funcionar.

+1

tiene sentido pero no se llama al evento 'OnChanged' cuando cambio el contenido del archivo. ¿Es un problema que mi filesystemwatcher esté dentro de una clase y no en 'Form1'? – Jimmy

+0

Debería tener una instancia de esa clase ejecutándose, de lo contrario no habrá guardián de archivos. –

+19

resuelto! Había olvidado: 'watcher.EnableRaisingEvents = true;' – Jimmy

5

Sí, pero puede buscar archivos específicos estableciendo la propiedad del filtro en el nombre del archivo.

p. Ej.

watcher.Filter = "dwm01_2011_06_13__09_03.LXD"; 
+0

¡Gracias! ¿Sabes si esto funcionará si quiero ver varias páginas individuales? es decir, My filesystemwatcher está dentro de una clase 'Página'. Varias instancias de la clase = varias páginas únicas que se ven? – Jimmy

+0

Sí, no veo por qué no. –

+0

Quizás, si estático. Un objeto de página se descargará después de que finalice su respuesta. –

Cuestiones relacionadas