//清除程序临时文件 void CardDoc::removeTempFile(const QString& path) { QDir dir; bool exist = dir.exists(path); if (exist) { QDir dirTmp(path); QFileInfoList list = dirTmp.entryInfoList(); //遍历删除目录下的文件 for (int i = 0; i < list.size(); ++i) { if(list.at(i).fileName() == "." || list.at(i).fileName() == "..") { continue; } dirTmp.remove(list.at(i).fileName()); } //删除tmp文件夹 dir.rmdir(path); } }
CardDoc::~CardDoc() { //removeTempFile(); QDir dir; bool exist = dir.exists("tmp"); if (exist) { QDir dirTmp("tmp//"); QFileInfoList list = dirTmp.entryInfoList(); //遍历删除目录下的文件 for (int i = 0; i < list.size(); ++i) { if(list.at(i).fileName() == "." || list.at(i).fileName() == "..") { continue; } dirTmp.remove(list.at(i).fileName()); } //删除tmp文件夹 dir.rmdir("tmp"); } }
bool PathManager::CopyDir(const QString &source, const QString &destination, bool isCover) { /* 递归实现 */ /*QDir directory(source); if (!directory.exists()){ return false; } QString srcPath = QDir::toNativeSeparators(source); if (!srcPath.endsWith(QDir::separator())){ srcPath += QDir::separator(); } QString dstPath = QDir::toNativeSeparators(destination); if (!dstPath.endsWith(QDir::separator())){ dstPath += QDir::separator(); } QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); for (QStringList::size_type i = 0; i != fileNames.size(); ++i) { QString fileName = fileNames.at(i); QString srcFilePath = srcPath + fileName; QString dstFilePath = dstPath + fileName; QFileInfo fileInfo(srcFilePath); if (fileInfo.isFile() || fileInfo.isSymLink()){ if (isCover){ QFile::setPermissions(dstFilePath, QFile::WriteOwner); } if (!QFile::copy(srcFilePath, dstFilePath)){ return false; } } else if (fileInfo.isDir()){ QDir dstDir(dstFilePath); dstDir.mkpath(dstFilePath); if (!CopyDir(srcFilePath, dstFilePath, isCover)){ return false; } } } return true;*/ QVector<QString> dirNames; QVector<QString> fileNames; QDir dir(source); if (!dir.exists()){ return false; } dirNames.clear(); dirNames << source; QFileInfoList filst; QFileInfoList::iterator curFi; for (int i = 0; i < dirNames.size(); ++i) { dir.setPath(dirNames[i]); filst = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Readable | QDir::Writable | QDir::Hidden | QDir::NoDotAndDotDot , QDir::DirsFirst); if (filst.size() > 0){ curFi = filst.begin(); while (curFi != filst.end()) { if (curFi->isDir()){ dirNames.push_back(curFi->filePath()); } else if (curFi->isFile()){ fileNames.push_back(curFi->absoluteFilePath()); } curFi++; } } } for (QVector<QString>::Iterator ite = dirNames.begin(); ite != dirNames.end(); ite++) { QDir dirSrc(source); QDir dirDest(destination); ite->replace(dirSrc.absolutePath(), dirDest.absolutePath()); QDir dirTmp(*ite); if (!dirTmp.exists() && !dirTmp.mkpath(*ite)){ return false; } } for (QVector<QString>::Iterator ite = fileNames.begin(); ite != fileNames.end(); ite++) { QDir dirSrc(source); QDir dirDest(destination); QString srcPath = *ite; QString tar = ite->replace(dirSrc.absolutePath(), dirDest.absolutePath()); QFile file(tar); if (file.exists()){ if (isCover){ if (!file.remove()){ return false; } } else{ continue; } } if (!QFile::copy(srcPath, tar)){ return false; } } return true; }