Oefening: bestanden en directory's maken

Voltooid

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

  1. Verwijder in het Program.cs bestand de foreach lus die elke bestandsnaam herhaalt en schrijft die wordt geretourneerd van de FindFiles functie naar de console-uitvoer . Deze wijziging resulteert in de salesFiles variabele die niet wordt gebruikt. We laten het hier echter voorlopig staan, omdat we het in een toekomstige les opnieuw gaan gebruiken.

  2. Maak in het Program.cs bestand een variabele met de naam salesTotalDir, 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);
    
  3. 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

  1. 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);
    
  2. Druk op Ctrl+S / Cmd+S om het bestand op te slaan.

  3. Voer het programma uit door de volgende code uit te voeren vanaf de terminalprompt:

    dotnet run
    
  4. Selecteer het pictogram Vernieuwen in Bestandsverkenner.

    Schermopname van het pictogram Vernieuwen in Bestandsverkenner van de Cloud Shell-editor.

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;
}