Oefening: bestanden en directory's maken
Met de klassen File
en Directory
in .NET kunt u programmatisch nieuwe bestanden en mappen maken.
Tot dusver hebt u een robuuste opdrachtregeltoepassing in .NET gemaakt waarmee elke mapstructuur kan worden gelezen om bestanden met een .json-extensie te zoeken. Nu moet u deze bestanden lezen om de gegevens hierin samen te vatten en vervolgens de totalen naar een nieuw bestand schrijven in een nieuwe map met de naam salesTotals.
In deze oefening maakt u de map salesTotalDir en het totals.txt-bestand waarin de verkooptotalen worden gesorteerd.
De map SalesTotals maken
Verwijder in het
Program.cs
bestand deforeach
lus die elke bestandsnaam herhaalt en schrijft die wordt geretourneerd van deFindFiles
functie naar de console-uitvoer . Deze wijziging resulteert in desalesFiles
variabele die niet wordt gebruikt. We laten het hier echter voorlopig staan, omdat we het in een toekomstige les opnieuw gaan gebruiken.Maak in het
Program.cs
bestand een variabele met de naamsalesTotalDir
, die het pad naar de map salesTotalDir bevat:var currentDirectory = Directory.GetCurrentDirectory(); var storesDirectory = Path.Combine(currentDirectory, "stores"); var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir"); var salesFiles = FindFiles(storesDirectory);
Voeg in het
Program.cs
bestand code toe om de map te maken:var currentDirectory = Directory.GetCurrentDirectory(); var storesDirectory = Path.Combine(currentDirectory, "stores"); var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir"); Directory.CreateDirectory(salesTotalDir); // Add this line of code var salesFiles = FindFiles(storesDirectory);
Het totals.txt-bestand schrijven
Voeg in het
Program.cs
bestand de code toe om een leeg bestand te maken met de naam totals.txt in de zojuist gemaakte salesTotalDir-map . Gebruik voorlopig een lege tekenreeks voor de inhoud van het bestand:var currentDirectory = Directory.GetCurrentDirectory(); var storesDirectory = Path.Combine(currentDirectory, "stores"); var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir"); Directory.CreateDirectory(salesTotalDir); var salesFiles = FindFiles(storesDirectory); File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);
Druk op Ctrl+S / Cmd+S om het bestand op te slaan.
Voer het programma uit door de volgende code uit te voeren vanaf de terminalprompt:
dotnet run
Selecteer het pictogram Vernieuwen in Bestandsverkenner.
U bent bijna klaar. Als laatste stap leest u de verkoopbestanden, telt u de totalen bij elkaar op en schrijft u het eindtotaal naar het nieuwe totals.txt-bestand. Hierna leert u hoe u gegevens in bestanden kunt lezen en parseren.
Vastgelopen?
Als u vastgelopen bent tijdens deze oefening, is dit de volledige code tot nu toe:
var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");
var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
Directory.CreateDirectory(salesTotalDir);
var salesFiles = FindFiles(storesDirectory);
File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);
IEnumerable<string> FindFiles(string folderName)
{
List<string> salesFiles = new List<string>();
var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
foreach (var file in foundFiles)
{
var extension = Path.GetExtension(file);
if (extension == ".json")
{
salesFiles.Add(file);
}
}
return salesFiles;
}