【发布时间】:2012-06-18 12:59:51
【问题描述】:
如何在 Qt 中删除非空文件夹。
【问题讨论】:
如何在 Qt 中删除非空文件夹。
【问题讨论】:
先递归删除目录的内容。 Here is a blog post with sample code for doing just that.我已经包含了相关代码sn-p。
bool removeDir(const QString & dirName)
{
bool result = true;
QDir dir(dirName);
if (dir.exists()) {
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 = QDir().rmdir(dirName);
}
return result;
}
编辑:以上答案适用于 Qt 4。如果您使用的是 Qt 5,则此功能通过 QDir::removeRecursively() 方法内置到 QDir 中。
【讨论】:
exists() 方法。 doc.qt.io/qt-4.8/qdir.html#exists-2
如果您使用的是 Qt 5,则有 QDir::removeRecursively()。
【讨论】: