Bài tập - Làm việc với hệ thống file
Bạn có thể sử dụng .NET để tìm và trả về thông tin về tệp và thư mục.
Tailwind Traders có nhiều cửa hàng vật lý trên toàn thế giới. Mỗi đêm, mỗi cửa hàng tạo một tệp có tên sales.json chứa tổng doanh thu cho ngày đó. Các tệp này được sắp xếp trong các thư mục có tên là ID cửa hàng.
Ghi
Mô-đun này sử dụng .NET CLI (Giao diện Dòng Lệnh) và mã Visual Studio phát triển cục bộ. Sau khi hoàn thành mô-đun này, bạn có thể áp dụng các khái niệm mà bạn đã học được bằng cách sử dụng môi trường phát triển như Visual Studio (Windows) hoặc Visual Studio for Mac (macOS) hoặc tiếp tục phát triển trong Visual Studio Code (Windows, Linux, & macOS).
Mô-đun này sử dụng .NET 8.0 SDK. Đảm bảo rằng bạn đã cài đặt .NET 8.0 bằng cách chạy lệnh sau đây trong thiết bị đầu cuối lệnh yêu thích của bạn:
dotnet --list-sdks
Đầu ra tương tự như ví dụ sau đây xuất hiện:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
Hãy đảm bảo rằng phiên bản bắt đầu bằng 8 được liệt kê. Nếu không có mục nào được liệt kê hoặc không tìm thấy lệnh, đặt phiên bản .NET 8.0 SDK mới nhất.
Sao chép dự án
Trong bài tập này, bạn viết một chương trình .NET tìm kiếm một thư mục và thư mục con của nó cho các tập tin có tên sales.json.
Một dự án mới bắt đầu đã được tạo cho bạn. Bạn sao chép nó bằng cách sử dụng thiết bị đầu cuối tích hợp trong Visual Studio Code.
Mở Mã Visual Studio.
Trong menu chính, chọn Xem thiết>đầu để mở cửa sổ thiết bị đầu cuối.
(Tùy chọn) Trong cửa sổ thiết bị đầu cuối, thay đổi thành thư mục mà bạn muốn sao chép các tệp, chẳng hạn như
c:\MyProjects.Trong cửa sổ thiết bị đầu cuối, chạy lệnh sau đây để sao chép dự án bắt đầu và đi đến dự án nhân bản:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-filesChạy lệnh sau để tạo dự án Bảng điều khiển .NET mới:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .Chạy lệnh sau đây để mở dự án .NET mới trong cùng một phiên bản của Visual Studio Code:
code -a .Mẹo
Tại thời điểm này, Mã Visual Studio có thể nhắc bạn rằng các tài sản cần thiết để xây dựng và chạy dự án bị thiếu.
Chọn hình tam giác có dấu chấm than và sau đó chọn khởi chạy lại thiết bị đầu cuối để thêm các tệp cho phép Mã Visual Studio chạy và gỡ lỗi dự án.
Trong cửa sổ Explorer, dưới mslearn-dotnet-files, hãy mở rộng lưu trữ và từng thư mục được đánh số bên trong.
Tìm tệp sales.json của bạn
Các tác vụ sau tạo một chương trình để tìm tất cả các tệp sales.json trong tất cả các thư mục của mslearn-dotnet-files án.
Bao gồm không gian System.IO trang
Trong cửa sổ Explorer, chọn tệp
Program.csđể mở trong trình soạn thảo.
Dán mã sau vào dòng đầu tiên của tệp
Program.csnhập không gianSystem.IOvàSystem.Collections.Genericsau:using System.IO; using System.Collections.Generic;
Ghi
Bắt đầu với .NET 6, hai báo cáo trong mã trước đó được tự động bao gồm trong một dự án mới theo cách của nhóm ImplcitUsings tính. Vì chúng tôi đã chỉ định -f net8.0 cờ khi tạo dự án bảng điều khiển mới nên chúng được thêm ngầm. Tuy nhiên, nếu bạn đang làm việc với một dự án cũ hơn, chúng cần được đưa vào tệp Program.cs và điều này không ảnh hưởng đến dự án này nếu bạn để chúng trong tệp.
Viết một hàm để tìm các tệp sales.json của bạn
Tạo một hàm mới có tên FindFiles lấy tham folderName mới.
Thay thế console .WriteLine("Xin chào, Thế giới!"); với mã sau:
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; }Chèn mã sau đây bên dưới câu lệnh
usingđể gọi hàmFindFilessau. Mã này truyền trong lưu trữ thư mục là vị trí để tìm kiếm tệp.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }Nhấn Ctrl+S (hoặc Cmd+S macOS) để lưu tệp
Program.cs.
Chạy chương trình
Nhập lệnh sau đây trong cửa sổ thiết bị đầu cuối để chạy chương trình:
dotnet runChương trình sẽ hiển thị đầu ra sau đây:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Tuyệt vời! Bạn đã viết thành công chương trình dòng lệnh đi qua tất cả các thư mục trong thư mục stores và liệt kê tất cả các tệp sales.json tìm thấy.
Trong ví dụ này, đường dẫn đến các lưu trữ thư mục khá đơn giản, và trong thư mục làm việc của chương trình. Trong đơn vị tiếp theo, bạn sẽ tìm hiểu cách xây dựng các cấu trúc phức tạp hoạt động trên các hệ điều hành bằng cách sử dụng lớp Path hệ điều hành.
Bạn gặp sự cố?
Nếu bạn gặp bất kỳ sự cố nào khi chạy chương trình, đây là mã đã hoàn tất cho tệp Program.cs của bạn. Thay thế nội dung của tệp Program.cs bạn bằng mã này:
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;
}