Arbeide med filsystemet
- 3 minutter
.NET inneholder innebygde typer for arbeid med filsystemet som du finner i System.IO navneområdet.
Her lærer du om hvilke typer som er tilgjengelige i System.IO ved å bruke C# til å lese et filsystem for å oppdage filer og kataloger.
Scenarioet
Store forhandlere skriver ofte data til filer, slik at de kan behandles senere i grupper.
Tailwind Traders har hver av sine butikker skrive sin salgssum til en fil og sende filen til en sentral plassering. Hvis du vil bruke disse filene, må firmaet opprette en satsvis prosess som kan fungere med filsystemet.
Inkluder System.IO navneområde
Det System.IO navneområdet inneholder innebygde typer som lar deg samhandle med filer og kataloger. Du kan for eksempel hente samlinger av filer og kataloger basert på søkekriterier og get og set egenskaper for filer og kataloger. Du kan også bruke System.IO navneområdetyper til å lese og skrive datastrømmer og filer synkront og asynkront.
Foreløpig skal vi fokusere på det du trenger å vite for å arbeide med kataloger ved hjelp av Directory klassen i System.IO navneområdet. Katalogklassen viser statiske metoder for oppretting, flytting og opplisting gjennom kataloger og underkataloger.
Vis alle kataloger
Klassen Directory brukes ofte til å liste opp (eller nummerere) kataloger. Tailwind Traders-filstrukturen har for eksempel en rotmappe kalt lagrer. I denne mappen er undermapper organisert etter butikknummer, og i disse mappene er salgssummen og lagerfilene. Strukturen ser slik ut:
📂 stores
📄 sales.json
📄 totals.txt
📂 201
📄 sales.json
📄 salestotals.json
📄 inventory.txt
📂 202
Hvis du vil lese gjennom og vise navnene på katalogene på øverste nivå, bruker du Directory.EnumerateDirectories-funksjonen.
IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");
foreach (var dir in listOfDirectories) {
Console.WriteLine(dir);
}
// Outputs:
// stores/201
// stores/202
Liste opp filer i en bestemt katalog
Hvis du vil vise navnene på alle filene i en katalog, kan du bruke Directory.EnumerateFiles-funksjonen.
IEnumerable<string> files = Directory.EnumerateFiles("stores");
foreach (var file in files)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/sales.json
Vis alt innhold i en katalog og alle underkataloger
Både funksjonene Directory.EnumerateDirectories og Directory.EnumerateFiles har en overbelastning som godtar en parameter for å angi at søkemønsterfiler og kataloger må samsvare.
De har også en annen overbelastning som godtar en parameter for å angi om du skal krysse en angitt mappe og alle undermappene på nytt.
// 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
I neste øvelse bruker du Directory-klassen til dynamisk å lese gjennom Tailwind Traders' hoved lagrer katalog for å finne alle sales.json filene.
Kontroller kunnskapen din
Tilbakemeldinger
Var denne siden nyttig?
Nei
Trenger du hjelp med dette emnet?
Vil du prøve å bruke Spør Learn for å klargjøre eller veilede deg gjennom dette emnet?