Praca z systemem plików

Ukończone

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.

Sprawdź swoją wiedzę

1.

Które z poniższych zadań można wykonywać przy użyciu metody Directory.EnumerateFiles?