Cvičení – práce se systémem souborů
Pomocí .NET můžete najít a vrátit informace o souborech a složkách.
Firma Tailwind Traders má spoustu kamenných prodejen po celém světě. Každý večer vytvoří každý obchod soubor s názvem sales.json , který obsahuje celkový prodej za daný den. Tyto soubory jsou uspořádány do složek pojmenovaných s ID úložiště.
Poznámka:
Tento modul používá rozhraní příkazového řádku .NET (rozhraní příkazového řádku) a Visual Studio Code pro místní vývoj. Po dokončení tohoto modulu můžete použít koncepty, které jste se naučili, pomocí vývojového prostředí, jako je Visual Studio (Windows) nebo Visual Studio pro Mac (macOS), nebo pokračovat ve vývoji v editoru Visual Studio Code (Windows, Linux a macOS).
Tento modul používá sadu .NET 8.0 SDK. Spuštěním následujícího příkazu v upřednostňovaném příkazovém terminálu se ujistěte, že máte nainstalované rozhraní .NET 8.0:
dotnet --list-sdks
Zobrazí se výstup podobný následujícímu příkladu:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Ujistěte se, že je uvedená verze, na 8
které začíná. Pokud žádný není uvedený nebo příkaz nebyl nalezen, nainstalujte nejnovější sadu .NET 8.0 SDK.
Klonování projektu
V tomto cvičení napíšete program .NET, který prohledá adresář a jeho podadresáře pro soubory s názvem sales.json.
Počáteční projekt už pro vás byl vytvořen. Naklonujete ho pomocí integrovaného terminálu v editoru Visual Studio Code.
Otevřete Visual Studio Code.
V hlavní nabídce vyberte Zobrazit>terminál a otevřete okno terminálu.
(Volitelné) V okně terminálu přejděte do adresáře, do kterého chcete soubory zkopírovat, například
c:\MyProjects
.V okně terminálu spusťte následující příkaz, který naklonuje počáteční projekt a přejde do klonovaného projektu:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
Spuštěním následujícího příkazu vytvořte nový projekt konzoly .NET:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
Spuštěním následujícího příkazu otevřete nový projekt .NET ve stejné instanci editoru Visual Studio Code:
code -a .
Tip
V tomto okamžiku může Visual Studio Code zobrazit výzvu, že chybí požadované prostředky pro sestavení a spuštění projektu.
Vyberte trojúhelník s vykřičníkem a pak výběrem terminálu Relaunch přidejte soubory, které sadě Visual Studio Code umožňují spustit a ladit projekt.
V okně Průzkumníka v části mslearn-dotnet-files rozbalte složku stores a všechny očíslované složky uvnitř.
Nalezení souborů sales.json
Následující úkoly vytvoří program pro vyhledání všech sales.json souborů ve všech složkách mslearn-dotnet-files
projektu.
Zahrnutí oboru názvů System.IO
V okně Průzkumníka
Program.cs
vyberte soubor, který chcete otevřít v editoru.Do prvního řádku
Program.cs
souboru vložte následující kód, který importuje oborySystem.IO
System.Collections.Generic
názvů:using System.IO; using System.Collections.Generic;
Poznámka:
Počínaje rozhraním .NET 6 se dva příkazy v předchozím kódu automaticky zahrnou do nového projektu prostřednictvím ImplcitUsings
skupiny vlastností. Vzhledem k tomu, že jsme při vytváření nového projektu konzoly zadali -f net8.0
příznak, implicitně se přidají. Pokud ale pracujete se starším projektem, musíte je zahrnout do Program.cs
souboru a tento projekt to neovlivní, pokud je v souboru necháte.
Vytvoření funkce pro nalezení souborů sales.json
Vytvořte novou funkci nazvanou FindFiles
, která převezme parametr folderName
.
Nahraďte console.WriteLine("Hello, World!"); řádek s následujícím kódem:
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; }
Pod příkazy pro volání
using
funkce vložte následující kódFindFiles
. Tento kód předá název složky stores jako umístění pro hledání souborů.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }
Stisknutím kombinace kláves Ctrl+S (nebo Cmd+S macOS) soubor uložte
Program.cs
.
Spuštění programu
V okně terminálu zadejte následující příkaz, který program spustí:
dotnet run
Program by měl zobrazit následující výstup:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Výborně! Úspěšně jste napsali program příkazového řádku, který prochází všemi složkami v stores
adresáři a zobrazí seznam všech nalezených souborů sales.json .
V tomto příkladu byla cesta k adresáři úložišť poměrně jednoduchá a v pracovním adresáři programu. V další lekci se dozvíte, jak pomocí třídy vytvořit složité struktury, které fungují napříč operačními Path
systémy.
Zasekli jste se?
Pokud jste měli nějaké problémy se spuštěním programu, tady je hotový kód Program.cs
souboru.
Program.cs
Obsah souboru nahraďte tímto kódem:
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;
}