2012-10-09 13 views
40

Kiedy próbuję ustawić ścieżkę watcher do jednego pliku w taki sposób:użycie FileSystemWatcher na jednym pliku w C#

watcher.Path = filePath1; 

pojawia się błąd:

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

można tylko ustawić ścieżka do katalogu folderów?

+0

watcher.Filter zrobi to, czego potrzebujesz. – Jay

+0

@Charleh, nie jestem pewny, że się z tym zgadzam, ponieważ FileSystemWatcher dostarcza również zmienione zdarzenie, więc możesz chcieć wiedzieć, kiedy dany plik zostanie zmieniony. –

+1

OK, to prawda, minęło trochę czasu, odkąd go użyłem - jestem pewien, że przeczytałem, że czasami może być niewiarygodne, gdy duża liczba zmian/plików zostały dodane/usunięte itp. – Charleh

Odpowiedz

79

Twój błąd jest ustawienie właściwości Path z pełną nazwą pliku

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

powinno działać.

+1

ma sens, ale zdarzenie "OnChanged" nie jest wywoływane, gdy zmieniam zawartość pliku. Czy to problem, że mój kontroler systemu plików znajduje się wewnątrz klasy, a nie "Form1"? – Jimmy

+0

Musiałbyś mieć uruchomioną instancję tej klasy, w przeciwnym razie nie będzie żadnego archiwum plików. –

+19

rozwiązany! Zapomniałem: 'watcher.EnableRaisingEvents = true;' – Jimmy

5

Tak, ale można oglądać określone pliki, ustawiając właściwość filtra na nazwę pliku.

np.

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

Dzięki! Czy wiesz, czy to zadziała, jeśli chcę oglądać wiele pojedynczych stron. Oznacza to, że mój system plików jest umieszczony w klasie "Strona". Wiele instancji klasy = obserwowanych wiele pojedynczych stron? – Jimmy

+0

Tak, nie widzę powodu, dlaczego nie. –

+0

Być może, jeśli jest statyczny. Obiekt strony zostanie rozładowany po zakończeniu odpowiedzi. –