使用 Qt 删除文件夹及其所有内容?

Posted

技术标签:

【中文标题】使用 Qt 删除文件夹及其所有内容?【英文标题】:Deleting a folder and all its contents with Qt? 【发布时间】:2015-01-03 19:13:08 【问题描述】:

如何使用Qt删除文件夹及其所有内容?

我尝试使用:

QFile::remove();

但它似乎一次只删除一个文件。

【问题讨论】:

这是此问题的副本:***.com/questions/11050977/… @InnocentBystander 领先你 25 秒 :P Removing a non empty folder in Qt的可能重复 【参考方案1】:

Qt5 及以上版本有QDir::removeRecursively:

QDir dir("C:\\Path\\To\\Folder\\Here");
dir.removeRecursively();

对于 Qt4 或更低版本,您可以使用删除每个文件的递归函数:

bool removeDir(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()) 
                result = removeDir(info.absoluteFilePath());
             else 
                result = QFile::remove(info.absoluteFilePath());
            

            if (!result) 
                return result;
            
        
        result = dir.rmdir(dirName);
    
    return result;

如here所述。

【讨论】:

我删除了整个目录包含大约700个文件的源代码,幸运的是我前一天提交了svn。 QDir::NoDotAndDotDot 非常重要,在其他地方它会跳跃一个高度,然后它会删除那里的所有内容

以上是关于使用 Qt 删除文件夹及其所有内容?的主要内容,如果未能解决你的问题,请参考以下文章

删除文件夹及其内容 AWS S3 java

java FTPClient如何删除远程服务器端的文件夹及其子文件夹及其内容!

PHP删除当前目录及其目录下的所有文件

rm 删除文件或目录

Linux文件操作

rm 命令