Praca z systemem plików
Platforma .NET zawiera wbudowane typy do pracy z systemem plików, które można znaleźć w System.IO
przestrzeni nazw.
W tym miejscu poznasz typy dostępne w System.IO
języku C#, aby odczytać system plików w celu odnajdywania plików i katalogów.
Scenariusz
Duże sprzedawcy detaliczni często zapisują dane w plikach, aby można je było przetwarzać później w partiach.
W firmie Tailwind Traders każdy sklep zapisuje sumę sprzedaży do pliku i wysyła ten plik do lokalizacji centralnej. Aby użyć tych plików, firma musi utworzyć proces wsadowy, który może pracować z systemem plików.
Uwzględnienie przestrzeni nazw System.IO
Przestrzeń nazw System.IO zawiera wbudowane typy, które umożliwiają interakcję z plikami i katalogami. Można na przykład pobrać kolekcje plików i katalogów na podstawie kryteriów wyszukiwania i get
set
właściwości plików i katalogów. Można również używać System.IO
typów przestrzeni nazw do synchronicznego i asynchronicznego odczytywania i zapisywania strumieni danych i plików.
Na razie skupimy się na tym, co musisz wiedzieć, aby pracować z katalogami przy użyciu klasy Directory
zawartej w przestrzeni nazw System.IO
. Klasa Directory udostępnia metody statyczne do tworzenia, przenoszenia i wyliczania za pomocą katalogów i podkatalogów.
Wyświetlanie listy wszystkich katalogów
Klasa Directory
jest często używana do wyświetlania listy katalogów (lub wyliczania). Na przykład struktura plików firmy Tailwind Traders ma folder główny o nazwie stores. W tym folderze znajdują się podfoldery uporządkowane według numeru sklepu, a wewnątrz tych folderów znajdują się pliki sales-total i inventory. Struktura wygląda następująco:
📂 stores
📄 sales.json
📄 totals.txt
📂 201
📄 sales.json
📄 salestotals.json
📄 inventory.txt
📂 202
Aby odczytać i wyświetlić listę nazw katalogów najwyższego poziomu, użyj Directory.EnumerateDirectories
funkcji .
IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");
foreach (var dir in listOfDirectories) {
Console.WriteLine(dir);
}
// Outputs:
// stores/201
// stores/202
Wyświetlanie listy plików w określonym katalogu
Aby wyświetlić listę nazw wszystkich plików w katalogu, możesz użyć funkcji Directory.EnumerateFiles
.
IEnumerable<string> files = Directory.EnumerateFiles("stores");
foreach (var file in files)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/sales.json
Wyświetlanie całej zawartości w katalogu i wszystkich podkatalogach
Zarówno funkcja Directory.EnumerateDirectories
, jak i Directory.EnumerateFiles
mają przeciążenie, które akceptuje parametr określający wzorzec wyszukiwania, z którym pliki i katalogi muszą być zgodne.
Mają również inne przeciążenie, które akceptuje parametr, wskazujący, czy funkcja ma cyklicznie przechodzić przez określony folder i wszystkie jego podfoldery.
// 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
W następnym ćwiczeniu użyjesz Directory
klasy , aby dynamicznie odczytywać katalog sklepów głównych firmy Tailwind Traders, aby znaleźć wszystkie pliki sales.json.