QT文件和文件夹拷贝操作
1.拷贝文件夹
//(源文件目录路劲,目的文件目录,文件存在是否覆盖)
bool copyDirectory(const QString& srcPath, const QString& dstPath, bool coverFileIfExist)
{
QDir srcDir(srcPath);
QDir dstDir(dstPath);
if (!dstDir.exists()) { //目的文件目录不存在则创建文件目录
if (!dstDir.mkdir(dstDir.absolutePath()))
return false;
}
QFileInfoList fileInfoList = srcDir.entryInfoList();
foreach(QFileInfo fileInfo, fileInfoList) {
if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")
continue;
if (fileInfo.isDir()) { // 当为目录时,递归的进行copy
if (!copyDirectory(fileInfo.filePath(),dstDir.filePath(fileInfo.fileName()),coverFileIfExist))
return false;
}
else { //当允许覆盖操作时,将旧文件进行删除操作
if (coverFileIfExist && dstDir.exists(fileInfo.fileName())) {
dstDir.remove(fileInfo.fileName());
}
/// 进行文件copy
if (!QFile::copy(fileInfo.filePath(), dstDir.filePath(fileInfo.fileName()))) {
return false;
}
}
}
return true;
}
2.拷贝文件
//(源文件文件路径,目的文件路径,文件存在是否覆盖)
bool copyFile(QString srcPath, QString dstPath, bool coverFileIfExist)
{
srcPath.replace("\\", "/");
dstPath.replace("\\", "/");
if (srcPath == dstPath) {
return true;
}
if (!QFile::exists(srcPath)) { //源文件不存在
return false;
}
if (QFile::exists(dstPath)) {
if (coverFileIfExist) {
QFile::remove(dstPath);
}
}
if (!QFile::copy(srcPath, dstPath)){
return false;
}
return true;
}