Øvelse – Arbeide med filsystemet
Du kan bruke .NET til å finne og returnere informasjon om filer og mapper.
Tailwind Traders har mange fysiske butikker over hele verden. Hver kveld oppretter hver butikk en fil med navnet sales.json som inneholder totalsummen for alle salg for den dagen. Disse filene er organisert i mapper med navnet på butikk-ID-en.
Merk deg
Denne modulen bruker .NET CLI (Kommandolinjegrensesnitt) og Visual Studio Code for lokal utvikling. Når du har fullført denne modulen, kan du bruke konseptene du har lært ved hjelp av et utviklingsmiljø som Visual Studio (Windows) eller Visual Studio for Mac (macOS), eller fortsette utviklingen i Visual Studio Code (Windows, Linux, &macOS).
Denne modulen bruker .NET 8.0 SDK. Kontroller at du har .NET 8.0 installert ved å kjøre følgende kommando i den foretrukne kommandoterminalen:
dotnet --list-sdks
Utdata som ligner på følgende eksempel, vises:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Kontroller at en versjon som starter med 8 er oppført. Hvis ingen er oppført eller kommandoen ikke blir funnet, installere den nyeste .NET 8.0 SDK-.
Klone prosjektet
I denne øvelsen skriver du et .NET-program som søker i en katalog og underkataloger etter filer som heter sales.json.
Et startprosjekt er allerede opprettet for deg. Du kloner den ved hjelp av den integrerte terminalen i Visual Studio Code.
Åpne Visual Studio Code.
Velg Vis>terminal i hovedmenyen for å åpne et terminalvindu.
(Valgfritt) I terminalvinduet endrer du til en katalog som du vil kopiere filene til, for eksempel
c:\MyProjects.Kjør følgende kommando i terminalvinduet for å klone startprosjektet og gå til det klonede prosjektet:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-filesKjør følgende kommando for å opprette et nytt .NET Console-prosjekt:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .Kjør følgende kommando for å åpne det nye .NET-prosjektet i samme forekomst av Visual Studio Code:
code -a .Tips
På dette tidspunktet kan Visual Studio Code be deg om at nødvendige ressurser for å bygge og kjøre prosjektet mangler.
Velg trekanten med utropstegnet, og velg deretter Start terminal på nytt for å legge til filene som gjør at Visual Studio Code kan kjøre og feilsøke prosjektet.
Utvid lagre-mappen og hver av de nummererte mappene i Explorer-vinduet under mslearn-dotnet-filer.
Finne sales.json-filene
Følgende aktiviteter oppretter et program for å finne alle sales.json filer i alle mappene i mslearn-dotnet-files prosjektet.
Inkluder System.IO navneområde
Velg filen i Explorer-vinduet for å åpne den
Program.csi redigeringsprogrammet.
Lim inn følgende kode i den første linjen i
Program.csfilen for å importereSystem.IOogSystem.Collections.Genericnavneområder:using System.IO; using System.Collections.Generic;
Merk deg
Fra og med .NET 6 inkluderes de to setningene i den forrige koden automatisk i et nytt prosjekt ved hjelp av ImplcitUsings egenskapsgruppen. Fordi vi angav -f net8.0 flagget da vi opprettet et nytt konsollprosjekt, legges de implisitt til. Hvis du arbeider med et eldre prosjekt, må de imidlertid inkluderes i Program.cs filen, og det påvirker ikke dette prosjektet hvis du forlater dem i filen.
Skriv en funksjon for å finne sales.json filer
Opprett en ny funksjon kalt FindFiles som tar en folderName-parameter.
Erstatt Console.WriteLine("Hello, World!"); linje med følgende kode:
IEnumerable<string> FindFiles(string folderName) { List<string> salesFiles = new List<string>(); var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); foreach (var file in foundFiles) { // The file name will contain the full path, so only check the end of it if (file.EndsWith("sales.json")) { salesFiles.Add(file); } } return salesFiles; }Sett inn følgende kode under
usinguttrykkene for å kalleFindFilesfunksjonen. Denne koden sendes i mappenavnet for butikker som plassering for å søke etter filer.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }Trykk CTRL+S (eller Cmd+S macOS) for å lagre
Program.csfilen.
Kjør programmet
Skriv inn følgende kommando i terminalvinduet for å kjøre programmet:
dotnet runProgrammet skal vise følgende utdata:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Fortreffelig! Du har skrevet et kommandolinjeprogram som krysser alle mappene i katalogen stores og viser alle sales.json filene som ble funnet.
I dette eksemplet var banen til butikkkatalogen ganske enkel, og i arbeidskatalogen for programmet. I den neste enheten lærer du hvordan du konstruerer komplekse strukturer som fungerer på tvers av operativsystemer ved hjelp Path av klassen.
Ble du sittende fast?
Hvis du hadde problemer med å kjøre programmet, kan du se den fullførte koden for Program.cs filen. Erstatt innholdet i Program.cs filen med denne koden:
var salesFiles = FindFiles("stores");
foreach (var file in salesFiles)
{
Console.WriteLine(file);
}
IEnumerable<string> FindFiles(string folderName)
{
List<string> salesFiles = new List<string>();
var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
foreach (var file in foundFiles)
{
// The file name will contain the full path, so only check the end of it
if (file.EndsWith("sales.json"))
{
salesFiles.Add(file);
}
}
return salesFiles;
}