遍历目录
删除
/* * 删除文件夹 */static bool deleteDirectory(const QString &path){ if (path.isEmpty()) return false; QDir dir(path); if(!dir.exists()) return true; dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); QFileInfoList fileList = dir.entryInfoList(); foreach (QFileInfo fi, fileList) { if (fi.isFile()) fi.dir().remove(fi.fileName()); else deleteDirectory(fi.absoluteFilePath()); } return dir.rmpath(dir.absolutePath());}
拷贝
/* * 拷贝文件夹 */static bool copyDirectoryFiles(const QString &fromDir, const QString &toDir, bool coverFileIfExist){ QDir sourceDir(fromDir); QDir targetDir(toDir); if(!targetDir.exists()) { /* 如果目标目录不存在,则进行创建 */ if(!targetDir.mkdir(targetDir.absolutePath())) return false; } QFileInfoList fileInfoList = sourceDir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList){ /* 遍历源文件夹内所有文件 */ if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; if(fileInfo.isDir()){ /* 当为目录时,递归的进行copy */ if(!copyDirectoryFiles(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName()), coverFileIfExist)) return false; } else{ /* 当允许覆盖操作时,将旧文件进行删除操作 */ if(coverFileIfExist && targetDir.exists(fileInfo.fileName())){ targetDir.remove(fileInfo.fileName()); } // 进行文件copy if(!QFile::copy(fileInfo.filePath(), targetDir.filePath(fileInfo.fileName()))){ return false; } } } return true;}
获得当前路径
// 获取当前进程的全路径qApp->applicationFilePath();// 获得当前程序, 所在目录qDebug()<< "current applicationDirPath: " << QCoreApplication::applicationDirPath();// 获得当前工作路径// 一般启动时, 为程序所在目录的上层qDebug()<< "current currentPath: " << QDir::currentPath();
拼接路径