Ćwiczenie — praca z systemem plików
Za pomocą platformy .NET możesz znajdować i zwracać informacje o plikach i folderach.
Firma Tailwind Traders ma wiele sklepów fizycznych na całym świecie. Każdego dnia każdy sklep tworzy plik o nazwie sales.json , który zawiera łączną liczbę wszystkich sprzedaży w tym dniu. Te pliki są zorganizowane w folderach o nazwie z identyfikatorem magazynu.
Uwaga
W tym module używany jest interfejs wiersza polecenia platformy .NET (interfejs wiersza polecenia) i program Visual Studio Code na potrzeby programowania lokalnego. Po ukończeniu tego modułu możesz zastosować poznane pojęcia przy użyciu środowiska programistycznego, takiego jak Visual Studio (Windows) lub Visual Studio dla komputerów Mac (macOS), albo kontynuować programowanie w programie Visual Studio Code (Windows, Linux i macOS).
W tym module jest używany zestaw .NET 8.0 SDK. Upewnij się, że masz zainstalowany program .NET 8.0, uruchamiając następujące polecenie w preferowanym terminalu poleceń:
dotnet --list-sdks
Zostanie wyświetlone dane wyjściowe podobne do następującego przykładu:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Upewnij się, że na liście znajduje się wersja rozpoczynająca się od 8
. Jeśli żadna z nich nie znajduje się na liście lub polecenie nie zostanie znalezione, zainstaluj najnowszy zestaw SDK platformy .NET 8.0.
Klonowanie projektu
W tym ćwiczeniu napiszesz program .NET, który przeszukuje katalog i jego podkatalogi dla plików o nazwie sales.json.
Projekt startowy został już utworzony. Sklonujesz go przy użyciu zintegrowanego terminalu w programie Visual Studio Code.
Otwórz Visual Studio Code.
W menu głównym wybierz pozycję Wyświetl>terminal, aby otworzyć okno terminalu.
(Opcjonalnie) W oknie terminalu przejdź do katalogu, do którego chcesz skopiować pliki, takie jak
c:\MyProjects
.W oknie terminalu uruchom następujące polecenie, aby sklonować projekt startowy i przejść do sklonowanego projektu:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
Uruchom następujące polecenie, aby utworzyć nowy projekt konsoli .NET:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
Uruchom następujące polecenie, aby otworzyć nowy projekt .NET w tym samym wystąpieniu programu Visual Studio Code:
code -a .
Napiwek
W tym momencie program Visual Studio Code może monitować o brak wymaganych zasobów do skompilowania i uruchomienia projektu.
Wybierz trójkąt z wykrzyknikiem, a następnie wybierz pozycję Uruchom ponownie terminal , aby dodać pliki, które umożliwiają uruchamianie i debugowanie projektu w programie Visual Studio Code.
W oknie Eksplorator w obszarze mslearn-dotnet-files rozwiń folder stores i każdy z ponumerowanych folderów wewnątrz.
Znajdowanie plików sales.json
Następujące zadania tworzą program do znajdowania wszystkich plików sales.json we wszystkich folderach mslearn-dotnet-files
projektu.
Uwzględnienie przestrzeni nazw System.IO
W oknie Eksplorator wybierz
Program.cs
plik, aby otworzyć go w edytorze.Wklej następujący kod w pierwszym wierszu pliku,
Program.cs
aby zaimportowaćSystem.IO
przestrzenie nazw iSystem.Collections.Generic
:using System.IO; using System.Collections.Generic;
Uwaga
Począwszy od platformy .NET 6, dwie instrukcje w poprzednim kodzie są automatycznie dołączane do nowego projektu za ImplcitUsings
pomocą grupy właściwości. Ponieważ określono flagę -f net8.0
podczas tworzenia nowego projektu konsoli, są one niejawnie dodawane. Jeśli jednak pracujesz ze starszym projektem, muszą one zostać uwzględnione w Program.cs
pliku i nie ma to wpływu na ten projekt, jeśli pozostawisz go w pliku.
Pisanie funkcji w celu znalezienia plików sales.json
Utwórz nową funkcję o nazwie FindFiles
, która przyjmuje parametr folderName
.
Zastąp ciąg Console.WriteLine("Hello, World!"); wiersz następującym kodem:
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; }
Wstaw następujący kod poniżej instrukcji
using
w celu wywołaniaFindFiles
funkcji. Ten kod przekazuje nazwę folderu stores jako lokalizację do wyszukiwania plików.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }
Naciśnij Ctrl+S (lub Cmd+S macOS), aby zapisać
Program.cs
plik.
Uruchamianie programu
Wprowadź następujące polecenie w oknie terminalu, aby uruchomić program:
dotnet run
Program powinien wyświetlić następujące dane wyjściowe:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Doskonale! Pomyślnie zapisano program wiersza polecenia, który przechodzi przez wszystkie foldery w stores
katalogu i wyświetla listę wszystkich znalezionych plików sales.json .
W tym przykładzie ścieżka do katalogu stores była dość prosta i w katalogu roboczym programu. W następnej lekcji dowiesz się, jak konstruować złożone struktury, które działają w różnych systemach operacyjnych przy użyciu Path
klasy .
Nie wiesz, co zrobić?
Jeśli wystąpiły problemy z uruchamianiem programu, oto ukończony kod pliku Program.cs
. Zastąp zawartość Program.cs
pliku następującym kodem:
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;
}