Övning – Arbeta med filsystemet
Du kan använda .NET för att hitta och returnera information om filer och mappar.
Tailwind Traders har många fysiska butiker över hela världen. Varje natt skapar varje butik en fil med namnet sales.json som innehåller summan av all försäljning för den dagen. Dessa filer ordnas i mappar med namnet med butiks-ID:t.
Kommentar
Den här modulen använder .NET CLI (Kommandoradsgränssnitt) och Visual Studio Code för lokal utveckling. När du har slutfört den här modulen kan du använda de begrepp som du har lärt dig genom att använda en utvecklingsmiljö som Visual Studio (Windows) eller Visual Studio för Mac (macOS) eller fortsätta utvecklingen i Visual Studio Code (Windows, Linux och macOS).
Den här modulen använder .NET 8.0 SDK. Kontrollera att du har .NET 8.0 installerat genom att köra följande kommando i önskad kommandoterminal:
dotnet --list-sdks
Utdata som liknar följande exempel visas:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Kontrollera att en version som börjar med 8
visas. Om inget visas eller om kommandot inte hittas installerar du den senaste .NET 8.0 SDK:t.
Klona projektet
I den här övningen skriver du ett .NET-program som söker i en katalog och dess underkataloger efter filer med namnet sales.json.
Ett startprojekt har redan skapats åt dig. Du klonar den med hjälp av den integrerade terminalen i Visual Studio Code.
Öppna Visual Studio Code.
I huvudmenyn väljer du Visa>terminal för att öppna ett terminalfönster.
(Valfritt) I terminalfönstret ändrar du till en katalog som du vill kopiera filerna till, till exempel
c:\MyProjects
.I terminalfönstret kör du följande kommando för att klona startprojektet och gå till det klonade projektet:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
Kör följande kommando för att skapa ett nytt .NET-konsolprojekt:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
Kör följande kommando för att öppna det nya .NET-projektet i samma instans av Visual Studio Code:
code -a .
Dricks
Nu kan Visual Studio Code uppmana dig att nödvändiga tillgångar för att skapa och köra projektet saknas.
Välj triangeln med utropstecken och välj sedan Starta om terminalen för att lägga till filerna som gör att Visual Studio Code kan köra och felsöka projektet.
I utforskarfönstret under mslearn-dotnet-files expanderar du mappen stores och var och en av de numrerade mapparna inuti.
Leta reda på sales.json-filerna
Följande uppgifter skapar ett program för att hitta alla sales.json filer i alla mappar i mslearn-dotnet-files
projektet.
Ta med namnrymden System.IO
I utforskarfönstret väljer du filen
Program.cs
för att öppna den i redigeraren.Klistra in följande kod på den första raden i
Program.cs
filen för att importera namnrymdernaSystem.IO
ochSystem.Collections.Generic
:using System.IO; using System.Collections.Generic;
Kommentar
Från och med .NET 6 inkluderas de två uttrycken i föregående kod automatiskt i ett nytt projekt via ImplcitUsings
egenskapsgruppen. Eftersom vi angav -f net8.0
flaggan när vi skapade ett nytt konsolprojekt läggs de implicit till. Men om du arbetar med ett äldre projekt måste de inkluderas i Program.cs
filen och det påverkar inte det här projektet om du lämnar dem i filen.
Skriva en funktion för att leta upp sales.json-filerna
Skapa en ny funktion med namnet FindFiles
som tar en folderName
-parameter.
Ersätt raden Console.WriteLine("Hello, World!"); med följande kod:
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; }
Infoga följande kod under instruktionerna
using
för att anropaFindFiles
funktionen. Den här koden skickar mappens namn som plats för att söka efter filer.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }
Spara filen genom
Program.cs
att trycka på Ctrl+S (eller Cmd+S macOS).
Köra programmet
Ange följande kommando i terminalfönstret för att köra programmet:
dotnet run
Programmet bör visa följande utdata:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Utmärkt! Du har skrivit ett kommandoradsprogram som passerar alla mappar i stores
katalogen och visar en lista över alla sales.json filer som hittades.
I det här exemplet var sökvägen till katalogen stores ganska enkel och i arbetskatalogen för programmet. I nästa lektion får du lära dig hur du konstruerar komplexa strukturer som fungerar mellan operativsystem med hjälp Path
av klassen .
Har du fastnat?
Om du har problem med att köra programmet, här är den färdiga koden för Program.cs
filen. Ersätt innehållet i Program.cs
filen med den här 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;
}