Làm việc với hệ thống tệp
- 3 phút
.NET chứa các kiểu tích hợp sẵn để làm việc với hệ thống tệp mà bạn có thể tìm thấy trong System.IO gian tên.
Tại đây, bạn tìm hiểu về các loại có sẵn trong System.IO sử dụng C# để đọc hệ thống tệp để khám phá các tệp và thư mục.
Kịch bản
Các nhà bán lẻ lớn thường ghi dữ liệu vào tệp để có thể xử lý sau theo lô.
Tailwind Traders có mỗi cửa hàng của mình viết tổng doanh thu của mình vào một tập tin và gửi tệp đó đến một vị trí trung tâm. Để sử dụng các tệp đó, công ty cần tạo một quy trình lô có thể làm việc với hệ thống tệp.
Bao gồm không gian System.IO trang
Không gian System.IO chứa kiểu dựng sẵn cho phép bạn tương tác với các tệp và thư mục. Ví dụ, bạn có thể truy xuất tập hợp các tệp và thư mục dựa trên tiêu chí tìm kiếm và các thuộc tính get và set tệp và thư mục. Bạn cũng có thể System.IO các loại không gian tên để đọc và ghi luồng dữ liệu và tệp một cách đồng bộ và không đồng bộ.
Bây giờ, chúng ta sẽ tập trung vào những gì bạn cần biết để làm việc với các thư mục bằng cách sử dụng lớp Directory chứa trong không gian System.IO tên. Lớp Thư mục hiển thị các phương pháp tĩnh để tạo, di chuyển và liệt kê thông qua các thư mục và thư mục con.
Liệt kê tất cả các thư mục
Lớp Directory thường được sử dụng để liệt kê các thư mục (liệt kê). Ví dụ, cấu trúc tập tin Tailwind Traders có một thư mục gốc được gọi là hàng. Trong thư mục đó là các thư mục con được sắp xếp theo số cửa hàng và bên trong các thư mục đó là các tệp tổng doanh thu và thư mục. Cấu trúc trông giống như ví dụ sau:
📂 stores
📄 sales.json
📄 totals.txt
📂 201
📄 sales.json
📄 salestotals.json
📄 inventory.txt
📂 202
Để đọc qua và liệt kê tên của các thư mục mức cao nhất, hãy sử dụng Directory.EnumerateDirectories này.
IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");
foreach (var dir in listOfDirectories) {
Console.WriteLine(dir);
}
// Outputs:
// stores/201
// stores/202
Liệt kê các tệp trong một thư mục cụ thể
Để liệt kê tên của tất cả các tệp trong một thư mục, bạn có thể sử dụng Directory.EnumerateFiles này.
IEnumerable<string> files = Directory.EnumerateFiles("stores");
foreach (var file in files)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/sales.json
Liệt kê tất cả nội dung trong thư mục và tất cả các thư mục con
Cả hàm Directory.EnumerateDirectories và Directory.EnumerateFiles có quá tải chấp nhận tham số để chỉ định các tệp mẫu tìm kiếm và thư mục phải khớp.
Chúng cũng có một quá tải khác chấp nhận tham số để cho biết liệu có nên đệ quy đi qua một thư mục đã xác định và tất cả các thư mục con của nó hay không.
// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);
foreach (var file in allFilesInAllFolders)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/201/inventory.txt
Trong bài tập tiếp theo, bạn sử dụng lớp Directory để tự động đọc qua cửa hàng chính của Tailwind Traders để tìm tất cả các tệp sales.json của bạn.
Kiểm tra kiến thức của bạn
Phản hồi
Trang này có hữu ích không?
Không
Cần trợ giúp về chủ đề này?
Bạn muốn thử sử dụng Ask Learn để làm rõ hoặc hướng dẫn bạn về chủ đề này?