Bài tập - Làm việc với hệ thống file

Đã hoàn thành

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)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.

  1. Mở Mã Visual Studio.

  2. Trong menu chính, chọn Xem thiết>đầu để mở cửa sổ thiết bị đầu cuối.

  3. (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.

  4. 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-files
    
  5. Chạ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 .
    
  6. 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.

    ảnh chụp màn hình hiển thị lời nhắc Visual Studio cho phép người dùng biết nội dung nào đó bị thiếu trong dự án.

    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.

  7. 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.

    hình của cửa sổ Explorer hiển thị cấu trúc thư mục dự án.

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

  1. Trong cửa sổ Explorer, chọn tệp Program.cs để mở trong trình soạn thảo.

    ảnh chụp màn hình của cửa sổ Explorer tô sáng tệp program.cs hình.

  2. Dán mã sau vào dòng đầu tiên của tệp Program.csnhập không gian System.IOSystem.Collections.Generic sau:

    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.

  1. 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;
    }
    
  2. Chèn mã sau đây bên dưới câu lệnh using để gọi hàm FindFiles sau. 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);
    }
    
  3. Nhấn Ctrl+S (hoặc Cmd+S macOS) để lưu tệp Program.cs.

Chạy chương trình

  1. Nhập lệnh sau đây trong cửa sổ thiết bị đầu cuối để chạy chương trình:

    dotnet run
    
  2. Chươ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;
}