使用 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 删除文件夹及其所有内容?的主要内容,如果未能解决你的问题,请参考以下文章