Qt 实现文件夹拷贝功能
Posted tangbolibao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 实现文件夹拷贝功能相关的知识,希望对你有一定的参考价值。
不多说废话直接上代码,注释详细,文件拷贝是自己封装的,Qt有现成的API-QFile::copy(),
//文件夹拷贝
void MainDialog::copyFolder(const QString& sourcePath,const QString& targetPath)
QDir sourceDir(sourcePath);
//判断源文件夹是否为空,空则返回
if(!sourceDir.exists() || sourceDir.isEmpty())
return;
QDir targetDir(targetPath);
//判断是否有目标文件夹,没有则创建一个
if(!targetDir.exists())
if(!targetDir.mkpath(targetPath))
qDebug()<<"创建文件夹失败";
LOG_ERROR2("创建文件夹失败%1",targetPath);
return;
//去掉.和..文件,..代表上一层,.代表当前,一般每个文件夹都会有这两个隐藏文件
sourceDir.setFilter(QDir::NoDotAndDotDot | QDir::AllEntries);
//获取该文件夹内所有文件除.和..以外
QStringList sourceFileList = sourceDir.entryList();
//遍历源文件夹列表
for(auto& i : sourceFileList)
QFileInfo fileInfo(sourcePath + i);
//判断是否是文件
if(fileInfo.isFile())
QFile file(targetPath + i);
//如果文件重名则不执行拷贝
if(!file.exists())
//没有则执行拷贝
if(!qfileUtil::copyFile(sourcePath + i,targetPath + i))
LOG_ERROR3("文件%1向%2拷贝失败",sourcePath + i,targetPath + i);
qDebug()<<"拷贝失败";
return;
//判断是否是文件夹
if(fileInfo.isDir())
//如果文件夹重名则不执行拷贝
if(!targetDir.exists(targetDir.absolutePath() + "/" + i))
//如果不重复则执行拷贝文件
if(!targetDir.mkdir(i))
LOG_ERROR3("文件夹%1向%2拷贝失败",sourcePath + i,targetPath + i);
qDebug()<<"文件夹拷贝失败";
return;
//回调
this->copyFolder(sourcePath + i + "/",targetPath + i + "/");
以上是关于Qt 实现文件夹拷贝功能的主要内容,如果未能解决你的问题,请参考以下文章