Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Użyj FileSystemWatcher do monitorowania zmian w określonym katalogu. Możesz obserwować zmiany w plikach i podkatalogach określonego katalogu. Można utworzyć składnik do oglądania plików na komputerze lokalnym, dysku sieciowym lub komputerze zdalnym.
Aby wyszukać zmiany we wszystkich plikach, ustaw Filter właściwość na pusty ciąg ("") lub użyj symboli wieloznacznych ("*.*"). Aby obejrzeć określony plik, ustaw Filter właściwość na nazwę pliku. Aby na przykład monitorować zmiany w pliku MyDoc.txt, ustaw właściwość Filter na wartość "MyDoc.txt". Możesz również obserwować zmiany w określonym typie pliku. Aby na przykład obserwować zmiany w plikach tekstowych, ustaw Filter właściwość na "*.txt".
Istnieje kilka typów zmian, które można obserwować w katalogu lub pliku. Można na przykład obserwować zmiany w Attributes, datę i godzinę LastWrite, lub Size plików lub katalogów. W tym celu należy ustawić NotifyFilter właściwość na jedną z NotifyFilters wartości. Aby uzyskać więcej informacji na temat rodzaju zmian, które możesz obserwować, zobacz NotifyFilters.
Możesz obserwować zmianę nazw, usuwanie lub tworzenie plików lub katalogów. Aby na przykład monitorować zmianę nazwy plików tekstowych, ustaw właściwość Filter na "*.txt" i wywołaj metodę WaitForChanged z parametrem Renamed.
System operacyjny Windows powiadamia składnik o zmianach plików w buforze utworzonym przez FileSystemWatcher. Jeśli w krótkim czasie istnieje wiele zmian, bufor może przepełnić się. Spowoduje to utratę monitorowania zmian w katalogu przez składnik, który będzie dostarczać tylko ogólnikowe powiadomienia. Zwiększenie rozmiaru buforu z właściwością InternalBufferSize jest kosztowne, ponieważ pochodzi z niestronicowanej pamięci, której nie można zamienić na dysk, więc zachowaj bufor tak mały, jak i wystarczająco duży, aby nie przegapić żadnych zdarzeń zmiany pliku. Aby uniknąć przepełnienia buforu, użyj NotifyFilter właściwości i IncludeSubdirectories , aby odfiltrować niechciane powiadomienia o zmianie.
Aby uzyskać listę początkowych wartości właściwości dla wystąpienia FileSystemWatcher, zobacz konstruktor FileSystemWatcher.
Zagadnienia dotyczące korzystania z FileSystemWatcher klasy:
- Ukryte pliki nie są ignorowane.
- W niektórych systemach FileSystemWatcher raportuje zmiany w plikach używając krótkiego formatu nazwy pliku 8.3. Na przykład zmiana "LongFileName.LongExtension" mogłaby być zgłoszona jako "LongFil~.Lon".
- Ta klasa zawiera wymóg łącza i wymóg dziedziczenia na poziomie klasy, które mają zastosowanie do wszystkich elementów członkowskich. Element SecurityException jest zgłaszany, gdy bezpośredni obiekt wywołujący lub klasa pochodna nie ma uprawnienia pełnego zaufania. Aby uzyskać szczegółowe informacje o wymaganiach dotyczących zabezpieczeń, zobacz Żądania linków.
- Maksymalny rozmiar, który można ustawić dla InternalBufferSize właściwości monitorowania katalogu za pośrednictwem sieci, wynosi 64 KB.
Kopiowanie i przenoszenie folderów
System operacyjny i FileSystemWatcher obiekt interpretują akcję wytnij i wklej lub akcję przeniesienia jako zmianę nazwy folderu i jego zawartości. Jeśli wycinasz i wklejasz folder z plikami do folderu monitorowanego, FileSystemWatcher obiekt zgłasza tylko folder jako nowy, ale nie jego zawartość, ponieważ jest ona zasadniczo traktowana jako tylko przemianowana.
Aby otrzymywać powiadomienia o przeniesieniu lub skopiowaniu zawartości folderów do obserwowanego folderu, podaj metody obsługi zdarzeń OnChanged i OnRenamed w sposób zasugerowany w poniższej tabeli.
| Obsługiwacz zdarzeń | Obsługiwane zdarzenia | Wykonuje |
|---|---|---|
| OnChanged | Changed, , CreatedDeleted | Zgłaszanie zmian w atrybutach pliku, utworzonych plikach i usuniętych plikach. |
| OnRenamed | Renamed | Wyświetl stare i nowe ścieżki zmienionych plików i folderów, rozwijając się rekursywnie w razie potrzeby. |
Zdarzenia i rozmiary buforów
Należy pamiętać, że kilka czynników może mieć wpływ na wywoływane zdarzenia zmiany systemu plików, zgodnie z opisem w następujący sposób:
- Typowe operacje systemu plików mogą zgłaszać więcej niż jedno zdarzenie. Na przykład, gdy plik jest przenoszony z jednego katalogu do drugiego, może wystąpić kilka zdarzeń OnChanged, a także niektóre zdarzenia OnCreated i OnDeleted. Przenoszenie pliku jest złożoną operacją składającą się z wielu prostych operacji, co powoduje uruchomienie wielu zdarzeń. Podobnie, niektóre aplikacje (na przykład oprogramowanie antywirusowe) mogą powodować dodatkowe zdarzenia systemu plików wykrywane przez FileSystemWatcher.
- FileSystemWatcher może obserwować dyski dopóki nie zostaną przełączone ani usunięte. Element FileSystemWatcher nie zgłasza zdarzeń dla dysków CD i DVD, ponieważ znaczniki czasu i właściwości nie mogą się zmieniać. Komputery zdalne muszą mieć jedną z wymaganych platform zainstalowanych, aby składnik działał prawidłowo.
Pamiętaj, że FileSystemWatcher może pominąć zdarzenie, gdy rozmiar buforu zostanie przekroczony. Aby uniknąć przegapienia wydarzeń, zastosuj się do poniższych wytycznych:
- Zwiększ rozmiar buforu, ustawiając InternalBufferSize właściwość .
- Unikaj oglądania plików z długimi nazwami plików, ponieważ długa nazwa pliku przyczynia się do wypełniania buforu. Rozważ zmianę nazw tych plików przy użyciu krótszych nazw.
- Zachowaj możliwie najkrótszy kod obsługi zdarzeń.