Práce se systémem souborů
.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 get
set
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.