Xóa thư mục với lớp DirectoryInfo sử dụng C#


       Khi sử dụng thư viện System.IO , bạn có tạo thư mục bằng cách sử dụng một thể hiện (hay còn gọi là đối tượng, tiếng anh là instance) của lớp DirectoryInfo  hoặc sử dụng lớp tiện ích Directory. Trong bài viết này sẽ hướng dẫn các bạn Xóa thư mục với lớp DirectoryInfo bằng cách sử dụng các đa hình (là một đặc tính của  lập trình hướng đối tượng miêu tả các phương thức cùng tên nhưng khác nhau tham số) của phương thức Delete với 1 thể hiện của lớp DirectoryInfo trong ngôn ngữ lập trình C#.

ng bài viết này sẽ hướng dẫn các bạn Xóa thư mục với lớp DirectoryInfo bằng cách sử dụng các đa hình (là một đặc tính của lập trình hướng đối tượng miêu tả các phương thức cùng tên nhưng khác nhau tham số) của phương thức Delete với 1 thể hiện của lớp DirectoryInfo trong ngôn ngữ lập trình C#.

       Lớp DirectoryInfo định nghĩa 2 phương thức Delete với cú pháp như sau:

public override void Delete (); : Xóa thể hiện DirectoryInfo nếu nó rỗng.

public void Delete (bool recursive); : Xóa thể hiện DirectoryInfo, các thư mục con và file ở trong nó nếu tham số recursive được set true, ngược lại sẽ giống phương thức xóa ở tren.

Quay trở lại ví dụ ở bài Tạo thư mục với lớp DirectoryInfo sử dụng C# trước đó , chúng ta sẽ xóa thư mục “New Directory” theo đường dẫn : “E:\Works\hoctoantap.com\New Directory”;

DirectoryInfo Is Empty

      Đoạn code mẫu dưới đây sẽ giúp bạn xóa thư mục “New Directory” như sau :

Code:

Note:

+ Ở comment “3” : Nếu trong máy tính của bạn tồn tại thư mục với đường dẫn : “E:\Works\hoctoantap.com\New Directory” và bên trong thư mục này không có bất cứ thư mục con hoặc file nào thì việc xóa thư mục của bạn ở bước này sẽ thành công như kết quả Output ở dưới :

Output:

DirectoryInfo Delete

      Hãy để ý, Khi bạn sử dụng phương thức Delete mà đường dẫn “E:\Works\hoctoantap.com\New Directory” của bạn không tồn tại, bạn sẽ  nhận được lỗi (Exception) có kiểu System.IO.DirectoryNotFoundException với thông điệp như sau : {“Could not find a part of the path ‘E:\\Works\\hoctoantap.com\\New Directory‘.”}.

Catch DirectoryNotFoundException when delete file

      Thông điệp này báo cho bạn biết là thư mục này không tồn tại và bạn không thể xóa nó. Để tránh lỗi này trong chương trình bạn có thể sử dụng thuộc tính Exists của lớp DirectoryInfo để kiểm tra việc tồn tại của thư mục trước khi xóa hoặc có thể sử dụng cậu lệnh try catch để bắt được lỗi này.  Trong bài toán thực tế nếu không có nghiệp vụ gì quá đặc biệt bắt buộc khiến phải sử dụng đến try catch thì bạn nên sử dụng thuộc tính Exists trong trường hợp này  sẽ tốt hơn:

Code

      Khi sử dụng phương thức xóa thư muc Delete() mà thư mục đó không rỗng, tức là bên trong nó vẫn còn thư muc hoặc file như hình dưới. Khi thực hiện chương trình bạn sẽ nhận được lỗi : “System.IO.IOException was unhandled” với thông điệp “The directory is not empty”.

DirectoryInfo Delete when has sub Directory

       Lỗi này báo cho bạn biết rằng, phương thức Delete() không tham số của lớp DirectoryInfo sẽ không được thực hiện nếu thư mục đó không trống, bạn phải xóa các thư mục con và file bên trong nó trước hoặc sử dụng phương thức Delete (bool recursive) để xóa tất cả thư mục con bên trong.

IOException

Code:

Output:

DirectoryInfo Delete when has sub Directory, file Result

Download Source

      Bài viết được hình thành mong muốn trao đổi và chia sẻ kiến thức về ngôn ngữ lập trình C#. Trong quá trình đăng, bài viết sẽ không thể tránh được những thông tin sai sót hoặc các bạn có thông tin cần trao đổi, chia sẻ các thông tin vui lòng comment bên dưới hoặc gửi vào email  [email protected] Xin chân thành cảm ơn.


Phản hồi

Phản hồi