A fájlrendszer használata
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.