Gyakorlat – Útvonalak használata

Befejeződött

A .NET-osztály PathDirectory.GetCurrentDirectory két módszer a fájlrendszer elérési útjának meghatározására és írására.

Az előző gyakorlatban egy olyan programot írt, amely egy mappán keresztül halad végig, és megkeresi a benne lévő sales.json fájlokat vagy almappákat.

Ebben a gyakorlatban az Path osztályt használja, és Directory.GetCurrentDirectory fejleszti a programot, hogy megtalálja a .json kiterjesztésű fájlokat.

Az aktuális könyvtár használata és az elérési utak egyesítése

Az Program.cs jelenlegi kódjában a stores mappa statikus helyét adja meg. Most úgy módosítjuk ezt a kódot, hogy statikus mappanév helyett az Directory.GetCurrentDirectory értéket használja.

  1. A szerkesztőbe szúrja be a következő kódot a fájl első sora Program.cs fölé. Ez a kód az Directory.GetCurrentDirectory aktuális könyvtár elérési útjának lekérésére és egy új változóban currentDirectoryvaló tárolására használja a metódust:

    var currentDirectory = Directory.GetCurrentDirectory();
    
  2. Szúrja be a következő kódot az imént hozzáadott kód után. Ez a kód a Path.Combine metódus használatával hozza létre a tárolókönyvtár teljes elérési útját, és egy új változóban storesDirectorytárolja:

    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
  3. Cserélje le a függvényhívás sztringét storesFindFiles az új változóra storesDirectory:

    var salesFiles = FindFiles(storesDirectory);
    

    A fájl tetejének a következő kódrészlethez hasonlóan kell kinéznie:

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    var salesFiles = FindFiles(storesDirectory);
    
    foreach (var file in salesFiles)
    {
        Console.WriteLine(file);
    }
    
  4. A fájl mentéséhez nyomja le a Ctrl+S (vagy Cmd+S macOS) billentyűkombinációt.

  5. Futtassa a programot a parancssorból:

    dotnet run
    
  6. A programnak a következő kimenetet kell megjelenítenie:

    /home/username/dotnet-files/stores/sales.json  
    /home/username/dotnet-files/stores/201/sales.json  
    /home/username/dotnet-files/stores/202/sales.json  
    /home/username/dotnet-files/stores/203/sales.json  
    /home/username/dotnet-files/stores/204/sales.json  
    

    Figyelje meg, hogy a visszaadott fájlnevek tartalmazzák a teljes rendszer elérési útját. Ez az elérési út azért van benne, mert Directory.GetCurrentDirectory a metódus a teljes elérési utat adja vissza az aktuális helyre.

Az összes .json-fájl megkeresése

Ahelyett, hogy csak sales.json fájlokat keresne, a programnak .json kiterjesztésű fájlokat kell keresnie. Ehhez a Path.GetExtension módszerrel ellenőrizheti az egyes fájlok bővítményét.

  1. foreach Az átvezetett foundFileshurokba szúrja be a következő kódsort az if utasítás fölé egy új változó extensiondefiniálásához. Ez a kód az Path.GetExtension egyes fájlok bővítményének lekérésére használja a metódust.

        var extension = Path.GetExtension(file);
    
  2. Módosítsa az utasítást if úgy, hogy az a következő kódsorhoz hasonlóan nézzen ki. Ez az utasítás ellenőrzi, hogy a fájl kiterjesztése megegyezik-e a .json kiterjesztéssel.

           if (extension == ".json")
    

    A foreach ciklusnak a következő kódhoz hasonlóan kell kinéznie:

    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }
    
  3. A fájl mentéséhez nyomja le a Ctrl+S / Cmd+S billentyűkombinációt.

  4. Futtassa a programot a parancssorból:

    dotnet run
    

    A kimenet most az összes .json fájlt megjeleníti az egyes tárolóazonosító-könyvtárakban:

    /home/username/dotnet-files/stores/sales.json  
    /home/username/dotnet-files/stores/201/sales.json
    /home/username/dotnet-files/stores/201/salestotals.json  
    /home/username/dotnet-files/stores/202/sales.json
    /home/username/dotnet-files/stores/202/salestotals.json    
    /home/username/dotnet-files/stores/203/sales.json  
    /home/username/dotnet-files/stores/203/salestotals.json  
    /home/username/dotnet-files/stores/204/sales.json  
    /home/username/dotnet-files/stores/204/salestotals.json  
    

Szép munka! A Path osztállyal és a Directory.GetCurrentDirectory metódussal jelentősen robusztusabbá tette a programot. A következő leckéből megtudhatja, hogyan hozhat létre könyvtárakat, valamint hogyan helyezhet át fájlokat helyek között.

Elakadt?

Ha a gyakorlat bármely pontján elakadt, itt megtekintheti a kész kódot. Távolítsa el mindent a Program.cs fájlból, és cserélje le erre a megoldásra:

var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");

var salesFiles = FindFiles(storesDirectory);
    
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)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}