Práce se systémem souborů

Dokončeno

.NET obsahuje předdefinované typy pro práci se systémem souborů, který najdete v System.IO oboru názvů.

Tady se dozvíte o typech dostupných v System.IO jazyce C# ke čtení systému souborů za účelem zjišťování souborů a adresářů.

Scénář

Velké prodejce často zapisují data do souborů, aby je bylo možné zpracovat později v dávkách.

Ve firmě Tailwind Traders zapisují všechny prodejny součty tržeb do souboru, který pak odešlou do centrálního umístění. Aby bylo možné tyto soubory použít, musí firma vytvořit dávkový proces, který může pracovat se systémem souborů.

Zahrnutí oboru názvů System.IO

Obor názvů System.IO obsahuje předdefinované typy, které umožňují interakci se soubory a adresáři. Můžete například načíst kolekce souborů a adresářů na základě kritérií vyhledávání a getset vlastností souborů a adresářů. Typy oborů názvů můžete také použít System.IO k synchronnímu a asynchronnímu čtení a zápisu datových proudů a souborů.

Prozatím se zaměříme na to, co potřebujete vědět, abyste pomocí třídy Directory v oboru názvů System.IO mohli pracovat s adresáři. Třída Directory zveřejňuje statické metody pro vytváření, přesouvání a výčet prostřednictvím adresářů a podadresářů.

Zobrazení všech adresářů

Třída Directory se často používá k výpisu (nebo výčtu) adresářů. Například struktura souborů Tailwind Traders má kořenovou složku s názvem stores. V této složce jsou podsložky uspořádané podle čísla obchodu a uvnitř těchto složek jsou soubory celkového prodeje a inventáře. Struktura vypadá jako v tomto příkladu:

📂 stores
    📄 sales.json
    📄 totals.txt
    📂 201
       📄 sales.json
       📄 salestotals.json
       📄 inventory.txt
    📂 202

K přečtení a výpisu názvů adresářů nejvyšší úrovně použijte Directory.EnumerateDirectories funkci.

IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");

foreach (var dir in listOfDirectories) {
    Console.WriteLine(dir);
}

// Outputs:
// stores/201
// stores/202

Zobrazení souborů v konkrétním adresáři

Pokud chcete zobrazit seznam názvů všech souborů v adresáři, můžete použít funkci Directory.EnumerateFiles.

IEnumerable<string> files = Directory.EnumerateFiles("stores");

foreach (var file in files)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/sales.json

Zobrazení veškerého obsahu adresáře a všech podadresářů

Funkce Directory.EnumerateDirectories i Directory.EnumerateFiles mají přetížení, které přijme parametr k zadání vzoru hledání, kterému musí soubory nebo adresáře odpovídat.

Mají také další přetížení, které přijímá parametr označující, zda se má zadaná složka a všechny její podsložky rekurzivně procházet.

// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);

foreach (var file in allFilesInAllFolders)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/201/inventory.txt

V dalším cvičení použijete Directory třídu k dynamickému čtení hlavního adresáře obchodů společnosti Tailwind Traders a vyhledání všech souborů sales.json.

Prověřte si své znalosti

1.

Které z následujících úkolů můžete dělat s funkcí Directory.EnumerateFiles?