Gyakorlat – A fájlrendszer használata
A .NET segítségével információkat kereshet és adhat vissza a fájlokról és mappákról.
A Tailwind Traders számos fizikai üzlettel rendelkezik világszerte. Minden éjjel minden áruház létrehoz egy sales.json nevű fájlt, amely tartalmazza az adott nap összes értékesítését. Ezek a fájlok az áruházazonosítóval ellátott mappákba vannak rendezve.
Megjegyzés:
Ez a modul a .NET CLI-t (parancssori felületet) és a Visual Studio Code-ot használja a helyi fejlesztéshez. A modul elvégzése után alkalmazhatja a tanult fogalmakat olyan fejlesztői környezetek használatával, mint a Visual Studio (Windows) vagy a Mac Visual Studio (macOS), vagy folytathatja a fejlesztést a Visual Studio Code-ban (Windows, Linux, &macOS).
Ez a modul a .NET 6.0 SDK-t használja. Győződjön meg arról, hogy telepítve van a .NET 6.0, ha az alábbi parancsot futtatja az előnyben részesített terminálban:
dotnet --list-sdks
A következőhöz hasonló kimenet jelenik meg:
3.1.100 [C:\program files\dotnet\sdk]
5.0.100 [C:\program files\dotnet\sdk]
6.0.100 [C:\program files\dotnet\sdk]
Győződjön meg arról, hogy az első 6
verzió szerepel a listában. Ha egyik sem szerepel a listában, vagy a parancs nem található, telepítse a legújabb .NET 6.0 SDK-t.
A projekt klónozása
Ebben a gyakorlatban egy .NET-programot ír, amely keres egy könyvtárat és annak alkönyvtárait a sales.json nevű fájlokban.
Már létrehozott önnek egy kezdőprojektet. Klónozza a Visual Studio Code integrált termináljának használatával.
Nyissa meg a Visual Studio Code-ot.
A főmenüben válassza a Terminál megtekintése>lehetőséget a TERMINÁL ablak megnyitásához.
(Nem kötelező) A TERMINÁL ablakban váltson olyan könyvtárra, amelybe másolni szeretné a fájlokat, például
c:\MyProjects
.A TERMINÁL ablakban futtassa a következő parancsot a kezdőprojekt klónozásához és a klónozott projekthez való ugráshoz:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
Futtassa a következő parancsot egy új .NET-konzolprojekt létrehozásához:
dotnet new console -f net6.0 -n mslearn-dotnet-files -o .
Futtassa a következő parancsot az új .NET-projekt megnyitásához a Visual Studio Code ugyanazon példányában:
code -a .
Tipp.
Ezen a ponton előfordulhat, hogy a Visual Studio Code arra kéri, hogy a projekt létrehozásához és futtatásához szükséges eszközök hiányoznak.
Jelölje ki a felkiáltójelet tartalmazó háromszöget, majd válassza a Terminál újraindítása lehetőséget az olyan fájlok hozzáadásához, amelyek lehetővé teszik a Visual Studio Code számára a projekt futtatását és hibakeresését.
Az EXPLORER ablak mslearn-dotnet-files területén bontsa ki az üzletek mappát és a benne lévő számozott mappákat.
A sales.json fájlok megkeresése
Az alábbi feladatok létrehoznak egy programot, amely a projekt összes mappájában megtalálja a mslearn-dotnet-files
sales.json fájlokat.
A System.IO névtér belefoglalása
Az EXPLORER ablakban válassza ki a
Program.cs
fájlt a szerkesztőben való megnyitásához.Illessze be a következő kódot a fájl első sorába a
Program.cs
System.IO
névterek importálásáhozSystem.Collections.Generic
:using System.IO; using System.Collections.Generic;
Megjegyzés:
A .NET 6-tól kezdve a fenti kód két utasítása automatikusan bekerül egy új projektbe a ImplcitUsings
tulajdonságcsoporton belül. Mivel egy új konzolprojekt létrehozásakor megadottuk a -f net6.0
jelzőt, a rendszer implicit módon hozzáadja őket. Ha azonban egy régebbi projekttel dolgozik, azokat bele kell foglalnia a Program.cs
fájlba, és ez nem érinti ezt a projektet, ha a fájlban hagyja őket.
Függvény írása a sales.json fájlok megkereséséhez
Hozzon létre egy FindFiles
nevű új függvényt, amely egy folderName
paramétert kér.
Cserélje le a Console.WriteLine("Hello, World!") sort a következő kódra:
IEnumerable<string> FindFiles(string folderName) { List<string> salesFiles = new List<string>(); var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); foreach (var file in foundFiles) { // The file name will contain the full path, so only check the end of it if (file.EndsWith("sales.json")) { salesFiles.Add(file); } } return salesFiles; }
A függvény meghívásához szúrja be az alábbi kódot az
using
FindFiles
utasítások alá. Ez a kód a fájlok keresésének helyeként adja át az üzletek mappanevét.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }
A fájl mentéséhez nyomja le a Ctrl+S (vagy Cmd+S macOS) billentyűkombinációt
Program.cs
.
A program futtatása
A program futtatásához írja be a következő parancsot a terminálablakba:
dotnet run
A programnak a következő kimenetet kell megjelenítenie:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Excellent! Sikeresen írt egy parancssori programot, amely bejárja a stores
címtár összes mappáját, és felsorolja a talált sales.json fájlokat.
Ebben a példában az áruházak könyvtárának elérési útja meglehetősen egyszerű volt, és a program munkakönyvtárában. A következő leckében megtanulhatja, hogyan hozhat létre összetett struktúrákat, amelyek az operációs rendszereken működnek az Path
osztály használatával.
Elakadt?
Ha probléma merült fel a program futtatásával kapcsolatban, a fájlhoz tartozó teljes kódot Program.cs
találja. Cserélje le a Program.cs
fájl tartalmát a következő kódra:
var salesFiles = FindFiles("stores");
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)
{
// The file name will contain the full path, so only check the end of it
if (file.EndsWith("sales.json"))
{
salesFiles.Add(file);
}
}
return salesFiles;
}