System.IO.FileSystemWatcher – třída
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Slouží FileSystemWatcher ke sledování změn v zadaném adresáři. Můžete sledovat změny v souborech a podadresářích zadaného adresáře. Můžete vytvořit komponentu pro sledování souborů na místním počítači, na síťové jednotce nebo na vzdáleném počítači.
Pokud chcete sledovat změny ve všech souborech, nastavte Filter vlastnost na prázdný řetězec ("") nebo použijte zástupné znaky (*.*). Pokud chcete sledovat konkrétní soubor, nastavte Filter vlastnost na název souboru. Pokud chcete například sledovat změny v souboru MyDoc.txt, nastavte Filter vlastnost na "MyDoc.txt". Můžete také sledovat změny v určitém typu souboru. Pokud chcete například sledovat změny v textových souborech, nastavte Filter vlastnost na *.txt.
V adresáři nebo souboru můžete sledovat několik typů změn. Můžete například sledovat změny v Attributes
datech LastWrite
a časech nebo Size
souborech nebo adresářích. To se provádí nastavením NotifyFilter vlastnosti na jednu z NotifyFilters hodnot. Další informace o typu změn, které můžete sledovat, najdete v tématu NotifyFilters.
Můžete sledovat přejmenování, odstranění nebo vytváření souborů nebo adresářů. Chcete-li například sledovat přejmenování textových souborů, nastavte Filter vlastnost na "*.txt" a zavolejte metodu WaitForChanged se zadaným parametrem Renamed .
Operační systém Windows upozorní vaši komponentu na změny souboru v vyrovnávací paměti vytvořené nástrojem FileSystemWatcher. Pokud v krátké době dojde k mnoha změnám, může vyrovnávací paměť přetékat. To způsobí, že komponenta ztratí přehled o změnách v adresáři a poskytne pouze deka oznámení. Zvětšení vyrovnávací paměti s InternalBufferSize vlastností je nákladné, protože pochází z nestránkované paměti, která se nedá vyměnit na disk, takže vyrovnávací paměť je dostatečně malá, aby nedošlo k vynechání událostí změny souboru. Abyste se vyhnuli přetečení vyrovnávací paměti, použijte NotifyFilter vlastnosti a IncludeSubdirectories vyfiltrujte nežádoucí oznámení o změnách.
Seznam počátečních hodnot vlastností pro instanci FileSystemWatchernaleznete v konstruktoru FileSystemWatcher .
Co je potřeba vzít v FileSystemWatcher úvahu při používání třídy:
- Skryté soubory nejsou ignorovány.
- V některýchsystémechch FileSystemWatcher Například změna na LongFileName.LongExtension může být hlášena jako LongFil~. Lon".
- Tato třída obsahuje požadavek na propojení a požadavek dědičnosti na úrovni třídy, který se vztahuje na všechny členy. Vyvolá SecurityException se, když buď bezprostřední volající, nebo odvozená třída nemá oprávnění úplné důvěryhodnosti. Podrobnosti o požadavcích na zabezpečení najdete v tématu Požadavky propojení.
- Maximální velikost, kterou můžete nastavit pro InternalBufferSize vlastnost pro monitorování adresáře přes síť, je 64 kB.
Kopírování a přesouvání složek
Operační systém a FileSystemWatcher objekt interpretují akci vyjmutí a vložení nebo akci přesunutí jako akci přejmenování složky a jejího obsahu. Pokud vyjmete a vložíte složku se soubory do sledované složky, FileSystemWatcher objekt hlásí pouze složku jako novou, ale ne její obsah, protože jsou v podstatě přejmenovány.
Chcete-li být upozorněni, že obsah složek byl přesunut nebo zkopírován do sledované složky, zadejte OnChanged a OnRenamed metody obslužné rutiny událostí, jak je navrženo v následující tabulce.
Obslužná rutina události | Události zpracovávané | Provádí |
---|---|---|
OnChanged | Changed, , CreatedDeleted | Změny sestavy v atributech souborů, vytvořených souborech a odstraněných souborech |
OnRenamed | Renamed | Vypíše staré a nové cesty přejmenovaných souborů a složek a v případě potřeby se znovu zvětší. |
Události a velikosti vyrovnávací paměti
Všimněte si, že několik faktorů může ovlivnit, které události změn systému souborů jsou vyvolány, jak je popsáno níže:
- Běžné operace systému souborů můžou vyvolat více než jednu událost. Například když se soubor přesune z jednoho adresáře do jiného, může dojít k vyvolání několika OnChanged a některých OnCreated událostí OnDeleted . Přesunutí souboru je složitá operace, která se skládá z několika jednoduchých operací, a proto vyvolává více událostí. Podobně některé aplikace (například antivirový software) mohou způsobit další události systému souborů, které jsou zjištěny FileSystemWatcher.
- Disky FileSystemWatcher se můžou sledovat, dokud se nepřepnou nebo neodeberou. Nevyvolává FileSystemWatcher události pro disky CD a DVD, protože časová razítka a vlastnosti se nemohou změnit. Vzdálené počítače musí mít nainstalovanou jednu z požadovaných platforem, aby komponenta fungovala správně.
Všimněte si, že FileSystemWatcher při překročení velikosti vyrovnávací paměti může chybět událost. Pokud se chcete vyhnout chybějícím událostem, postupujte podle těchto pokynů:
- Zvětšete velikost vyrovnávací paměti nastavením InternalBufferSize vlastnosti.
- Vyhněte se sledování souborů s dlouhými názvy souborů, protože dlouhý název souboru přispívá k vyplnění vyrovnávací paměti. Zvažte přejmenování těchto souborů pomocí kratších názvů.
- Udržujte kód pro zpracování událostí co nejkratší.