31
如何刪除Qt中的非空文件夾。刪除Qt中的非空文件夾
如何刪除Qt中的非空文件夾。刪除Qt中的非空文件夾
遞歸刪除目錄的內容。 Here is a blog post with sample code for doing just that.我已經包含了相關的代碼片段。
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與QDir::removeRecursively()方法。
如果您使用的是Qt 5,則有QDir::removeRecursively()。
似乎不會用於相對路徑。 removeDir(「docs」)將檢查第一個if中是否存在「docs/docs」。同樣的問題是在dir.rmdir行。我對嗎 ? – cybevnm
@cybevnm:是的,你說得對。我改變了代碼片段,使用重載的不存在參數的'exists()'方法。 http://doc.qt.io/qt-4.8/qdir.html#exists-2 –
「result = dir.rmdir(dirName)」行有相同的缺陷,我相信。我用QDir()。rmdir(dirName)來修復它。 – cybevnm