19 thg 4, 2012

Xoá thư mục không rỗng trong Qt

Cho đến phiên bản 4.8, để xoá một file trong Qt chúng ta dùng QFile::remove hay QDir::remove, để xoá một thư mục rỗng thì chúng ta sử dụng QDir::rmdir và không có sẵn phương thức để xoá một thư mục không rỗng.
Đến phiên bản 5.0, thì Qt bổ sung phương thức QDir::removeRecursively dùng để xoá thư mục và toàn bộ nội dung bên trong của nó. Như vậy nếu chúng ta đang dùng Qt phiên bản 4.8 trở về trước thì chúng ta tự hiện thực phương thức  removeRecursively. Sau đây là cách hiện thực sử dụng đệ quy của Folami tôi:
bool removeRecursively(const QString &dirName)
{
    bool result = true;
    QDir dir(dirName);
 
    if (dir.exists(dirName)) {
        Q_FOREACH(QFileInfo info, 
                 dir.entryInfoList(QDir::NoDotAndDotDot | 
                                   QDir::System | 
                                   QDir::Hidden | 
                                   QDir::AllDirs | 
                                   QDir::Files, QDir::DirsFirst)) {
            if (info.isDir()) { 
            //Neu la thu muc thi goi de quy de xoa thu muc nay 
            result = removeRecursively(info.absoluteFilePath());
            }
            else {
                result = QFile::remove(info.absoluteFilePath());
            }
 
            if (!result) {
                return result;
            }
        } 
        //Da xoa het noi dung, thu muc la thu muc rong
        //Xoa no 
      result = dir.rmdir(dirName);
    }
 
    return result;
}

Không có nhận xét nào:

Đăng nhận xét

Related Posts Plugin for WordPress, Blogger...