Bỏ qua phần mở rộng lọc txt ... Đây là một cách để xóa mọi thứ trong thư mục , bao gồm các thư mục con không trống:
Trong QT5, bạn có thể sử dụng removeRecursively() trên thư mục. Thật không may, điều đó loại bỏ toàn bộ thư mục - thay vì chỉ xóa nó. Đây là một chức năng cơ bản để chỉ xóa nội dung của một thư mục.
void clearDir(const QString path)
{
QDir dir(path);
dir.setFilter(QDir::NoDotAndDotDot | QDir::Files);
foreach(QString dirItem, dir.entryList())
dir.remove(dirItem);
dir.setFilter(QDir::NoDotAndDotDot | QDir::Dirs);
foreach(QString dirItem, dir.entryList())
{
QDir subDir(dir.absoluteFilePath(dirItem));
subDir.removeRecursively();
}
}
Hoặc, bạn có thể sử dụng removeRecursively() trên thư mục bạn muốn xóa (sẽ xóa hoàn toàn). Sau đó, tạo lại nó với cùng tên sau đó ... Hiệu ứng sẽ giống nhau, nhưng với ít dòng mã hơn. Tuy nhiên, hàm chi tiết hơn này cung cấp thêm tiềm năng để xử lý ngoại lệ chi tiết được thêm vào nếu muốn, ví dụ: phát hiện vi phạm quyền truy cập vào các tệp/thư mục cụ thể ...
Nhưng tôi muốn sử dụng QT, như tôi đã nêu trong câu hỏi. – user1794021