A fájlrendszer használata

Befejeződött

A .NET beépített típusokat tartalmaz a névtérben System.IO található fájlrendszerek működéséhez.

Itt megismerheti a C# használatával elérhető System.IO típusokat a fájlrendszerek olvasásához a fájlok és könyvtárak felderítéséhez.

Esetleírás

A nagy kiskereskedők gyakran írnak adatokat a fájlokba, hogy később, kötegekben feldolgozhatók legyenek.

A Tailwind Traders minden üzlete egy fájlba írja az értékesítési összegeket, majd a fájlt egy központi helynek küldi. Ezeknek a fájloknak a használatához a vállalatnak létre kell hoznia egy kötegelt folyamatot, amely képes működni a fájlrendszerrel.

A System.IO névtér belefoglalása

A System.IO névtér beépített típusokat tartalmaz, amelyek lehetővé teszik a fájlok és könyvtárak használatát. Lekérheti például a fájlok és könyvtárak gyűjteményeit a keresési feltételek és get a fájlok és set könyvtárak tulajdonságai alapján. Névtértípusok használatával System.IO szinkronizálhatja és aszinkron módon olvashatja és írhatja az adatfolyamokat és fájlokat.

Itt egyelőre csak azokkal foglalkozunk, amelyekre szükség van ahhoz, hogy a System.IO névtérben foglalt Directory osztállyal könyvtárakkal dolgozzunk. A címtárosztály statikus metódusokat tesz elérhetővé könyvtárakon és alkönyvtárakon keresztül történő létrehozáshoz, áthelyezéshez és számbavételhez.

Az összes könyvtár listázása

Az Directory osztályt gyakran használják a könyvtárak listázására (vagy számbavételére). A Tailwind Traders fájlstruktúra például rendelkezik egy tárolónak nevezett gyökérmappával. Ebben a mappában az almappák üzletszám szerint vannak rendszerezve, és ezekben a mappákban találhatók az értékesítési összeg és a leltárfájlok. A struktúra a következő példához hasonlóan néz ki:

📂 stores
    📄 sales.json
    📄 totals.txt
    📂 201
       📄 sales.json
       📄 salestotals.json
       📄 inventory.txt
    📂 202

A felső szintű könyvtárak nevének olvasásához és listázásához használja a függvényt Directory.EnumerateDirectories .

IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");

foreach (var dir in listOfDirectories) {
    Console.WriteLine(dir);
}

// Outputs:
// stores/201
// stores/202

Adott könyvtár fájljainak listázása

A könyvtárban található összes fájl nevének listázásához használhatja a Directory.EnumerateFiles függvényt.

IEnumerable<string> files = Directory.EnumerateFiles("stores");

foreach (var file in files)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/sales.json

Egy könyvtár és annak összes alkönyvtára tartalmának listázása

Mind a Directory.EnumerateDirectories, mind a Directory.EnumerateFiles függvénynek van egy túlterhelése, amely egy olyan keresési mintázat megadására szolgáló paramétert fogad, amelynek a fájloknak és könyvtáraknak meg kell felelniük.

A másik túlterhelésük egy olyan paramétert fogad, amely azt jelzi, hogy szükség van-e egy adott mappa és az összes almappájának rekurzív módon történő bejárására.

// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);

foreach (var file in allFilesInAllFolders)
{
    Console.WriteLine(file);
}

// Outputs:
// stores/totals.txt
// stores/201/inventory.txt

A következő gyakorlatban az osztály használatával dinamikusan olvassa át a Directory Tailwind Traders fő áruházainak könyvtárát az összes sales.json fájl megkereséséhez.

Tesztelje tudását

1.

Az alábbiak közül melyik feladatot hajthatja végre a Directory.EnumerateFiles metódussal?