Sử dụng đệ quy để lấy danh sách file trong C#


        Trong ngôn ngữ lập trình C#, thư viện System.IO cung cấp tương đối đầy đủ các đối tượng cho phép bạn thao tác tới các file và các thư mục trên hệ điều hành. Một bài toán đặt ra là : “Khi cần lấy tất cả các file bên trong một thư mục có nhiều cấp bạn cần làm thế nào?”. Bài này sẽ viết về cách để bạn có thể giải quyết bài toán bằng cách sử dụng phương thức GetFiles 3 tham số của lớp Directory hoặc bạn có thể sử dụng phương thức GetFiles 1 tham số của lớp Directory kết hợp với đệ quy để lấy danh sách file trong C#

Recursion file with C#


1.  Sử dụng phương thức 3 tham số GetFiles(String, String, SearchOption) của lớp File

       Phương thức GetFiles của lớp static Directory, một trong các lớp tiện ích thường được sử dụng để thao tác với File trong thư viện System.IO của ngôn ngữ lập trình C#. Phương thức GetFiles có 3 hình thái (đa hình), (Chi tiết có xem :  Thao tác với các file trong ngôn ngữ lập trình C#). Giả sử ta có thư mục đầu vào như trong ảnh, và công việc của ta là liệt kê tất cả các thư mục con của nó :

Recursion file with C# input

       Trong hình cho thấy thư mục cha có tổng cộng 24 file nhưng chỉ có 9 file ở mức một còn các file khác đang ở trong thư mục mức 2 hoặc 3,…, Với hình thái phương thức 3 tham sốtrong lớp Directory có khai báo như sau :




      Để lấy tất cả các file bên trong một thư mục có nhiều cấp với hàm GetFiles ta thực hiện :

       Kết quả danh sách các file hiển thị như sau:

Recursion file with C# output


2.  Sử dụng phương thức 1 tham số GetFiles(String) của lớp Directory và đệ quy

       Phương thức một tham số GetFiles(String) của lớp Directory có cú pháp :

        Trong đó, tham số path là đường dẫn tới thư mục cha và phương thức này trả về các thư mục con cấp một của thư mục cha này. Để lấy tất cả các file bên trong một thư mục có nhiều cấp ta sử đệ quy bằng các kết hợp Sử dụng đệ quy để lấy danh sách thư mục trong C# và hàm GetFiles như sau:

       Thực thi lời gọi phương thức RecursionFiles và hiển thị danh sách các file lấy được :

       Kết quả danh sách thư mục nhận được :

Recursion file with C# output 1

        Nếu muốn hiển thị thêm số lượng các file tìm kiếm được trong hàm đệ quy, thì chúng ta có thể dùng list để lưu lại danh sách các file đã tìm được giống như trong bài Sử dụng đệ quy để lấy danh sách thư mục trong C#  , hoặc ta có thể viết một phương thức đa hình thêm một tham số đếm nữa, sử dụng từ khóa ref trong ngôn ngữ lập trình C# như sau:

        Thực thi lời gọi phương thức RecursionFiles với 2 tham số và hiển thị danh sách và tổng số file lấy được :

       Kết quả danh sách thư mục nhận được :

Recursion file with C# output 2

Các bạn có thể tải mã nguồn (Download Source) : Tại đây

      Trong quá trình viết bài có thể không tránh khỏi những sơ xuất hoặc có những gì cần góp ý các bạn vui lòng để comment bên dưới hoặc gửi tới email [email protected].




[Ngôn ngữ lập trình C#]


Related Post

Phản hồi

Phản hồi