LINQ a adresáře souborů (C#)

Mnoho operací se systémem souborů jsou v podstatě dotazy a jsou proto vhodné pro přístup LINQ.

Dotazy v této části jsou nedestruktivní. Nepoužívají se ke změně obsahu původních souborů nebo složek. To se řídí pravidlem, které by dotazy neměly způsobit žádné vedlejší účinky. Obecně platí, že jakýkoli kód (včetně dotazů, které provádějí operátory vytvoření, aktualizace nebo odstranění), které upraví zdrojová data, by se měly uchovávat odděleně od kódu, který se na data dotazuje.

Tato část obsahuje následující témata:

Dotazování na soubory se zadaným atributem nebo názvem (C#)
Ukazuje, jak vyhledat soubory prozkoumáním jedné nebo více vlastností jeho FileInfo objektu.

Seskupení souborů podle přípony (LINQ) (C#)
Ukazuje, jak vrátit skupiny FileInfo objektů na základě jejich přípony názvu souboru.

Jak dotazovat celkový počet bajtů v sadě složek (LINQ) (C#)
Ukazuje, jak vrátit celkový počet bajtů ve všech souborech v zadaném adresářovém stromu.

Porovnání obsahu dvou složek (LINQ) (C#)s
Ukazuje, jak vrátit všechny soubory, které jsou přítomné ve dvou zadaných složkách, a také všechny soubory, které jsou přítomné v jedné složce, ale ne ve druhé.

Dotazování na největší soubor nebo soubory ve stromu adresáře (LINQ) (C#)
Ukazuje, jak vrátit největší nebo nejmenší soubor nebo zadaný počet souborů ve stromu adresáře.

Jak dotazovat duplicitní soubory ve stromu adresáře (LINQ) (C#)
Ukazuje, jak seskupit všechny názvy souborů, ke kterým dochází ve více než jednom umístění v zadaném adresářovém stromu. Ukazuje také, jak provádět složitější porovnání na základě vlastního porovnávače.

Jak dotazovat obsah souborů ve složce (LINQ) (C#)
Ukazuje, jak iterovat složky ve stromu, otevřít jednotlivé soubory a dotazovat se na obsah souboru.

Komentáře

Při vytváření zdroje dat, který přesně představuje obsah systému souborů, je potřeba složitě zpracovat výjimky. Příklady v této části vytvoří kolekci FileInfo snímků objektů, které představují všechny soubory v zadané kořenové složce a všechny její podsložky. Skutečný stav každého FileInfo se může v čase mezi zahájením a ukončením provádění dotazu změnit. Můžete například vytvořit seznam FileInfo objektů, které se mají použít jako zdroj dat. Pokud se pokusíte získat přístup Length k vlastnosti v dotazu, FileInfo objekt se pokusí získat přístup k systému souborů, aby se aktualizovala hodnota Length. Pokud soubor již neexistuje, získáte FileNotFoundException v dotazu dotaz, i když dotazujete přímo systém souborů. Některé dotazy v této části používají samostatnou metodu, která v určitých případech využívá tyto konkrétní výjimky. Další možností je udržovat zdroj dat dynamicky aktualizovaný pomocí příkazu FileSystemWatcher.