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#.
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”;
Đoạn code mẫu dưới đây sẽ giúp bạn xóa thư mục “New Directory” như sau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
static void Main(string[] args) { // 1. Đường dẫn tới thư mục cần tạo New Directory string directoryPath = @"E:\Works\hoctoantap.com\New Directory"; // 2.Khai báo một thể hiện của lớp DirectoryInfo DirectoryInfo directory = new DirectoryInfo(directoryPath); // 3.Xóa thư mục bằng cách sử dụng phương thức Delete directory.Delete(); // Thông báo cho người dùng kết quả việc xóa dữ liệu Console.WriteLine("Thu muc {0} da duoc xoa.", directory.Name); Console.ReadLine(); } |
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:
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‘.”}.
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
static void Main(string[] args) { // 1. Đường dẫn tới thư mục cần tạo New Directory string directoryPath = @"E:\Works\hoctoantap.com\New Directory"; // 2.Khai báo một thể hiện của lớp DirectoryInfo DirectoryInfo directory = new DirectoryInfo(directoryPath); // Kiểm tra nếu thư mục tồn tại mới thực hiện việc xóa file if (directory.Exists) { // 3.Xóa thư mục bằng cách sử dụng phương thức Delete directory.Delete(); // Thông báo cho người dùng kết quả việc xóa thư mục Console.WriteLine("Thu muc {0} da duoc xoa.", directory.Name); } else { // Thông báo cho người dùng kết quả việc xóa thư mục Console.WriteLine("Thu muc {0} khong ton tai.", directory.Name); } Console.ReadLine(); } |
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”.
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.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
static void Main(string[] args) { // 1. Đường dẫn tới thư mục cần tạo New Directory string directoryPath = @"E:\Works\hoctoantap.com\New Directory"; // 2.Khai báo một thể hiện của lớp DirectoryInfo DirectoryInfo directory = new DirectoryInfo(directoryPath); // Kiểm tra nếu thư mục tồn tại mới thực hiện việc xóa file if (directory.Exists) { // 3.Sử dụng phương thức Delete với tham sô recursive = true để xóa thư mục đó // cùng với tất cả thư mục bên trong directory.Delete(true); // Thông báo cho người dùng kết quả việc xóa thư mục Console.WriteLine("Thu muc {0} da duoc xoa cung cac thu muc con.", directory.Name); } else { // Thông báo cho người dùng kết quả việc xóa thư mục Console.WriteLine("Thu muc {0} khong ton tai.", directory.Name); } Console.ReadLine(); } |
Output:
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.