1 bool deleteDir(const QString &dirName)
2 {
3 QDir directory(dirName);
4 if (!directory.exists())
5 {
6 return true;
7 }
8
9
10 QString srcPath = QDir::toNativeSeparators(dirName);
11 if (!srcPath.endsWith(QDir::separator()))
12 srcPath += QDir::separator();
13
14
15 QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
16 bool error = false;
17 for (QStringList::size_type i=0; i != fileNames.size(); ++i)
18 {
19 QString filePath = srcPath + fileNames.at(i);
20 QFileInfo fileInfo(filePath);
21 if (fileInfo.isFile() || fileInfo.isSymLink())
22 {
23 QFile::setPermissions(filePath, QFile::WriteOwner);
24 if (!QFile::remove(filePath))
25 {
26 qDebug() << "remove file" << filePath << " faild!";
27 error = true;
28 }
29 }
30 else if (fileInfo.isDir())
31 {
32 if (!deleteDir(filePath))
33 {
34 error = true;
35 }
36 }
37 }
38
39
40 if (!directory.rmdir(QDir::toNativeSeparators(directory.path())))
41 {
42 qDebug() << "remove dir" << directory.path() << " faild!";
43 error = true;
44 }
45 return !error;
46 }