#include "FileUtil.h" #include #include #include #include #include FileUtil::FileUtil() { } bool FileUtil::copyDirectoryFiles(QString &srcFilePath, QString &tgtFilePath, bool coverFileIfExist) { QDir sourceDir(tgtFilePath); QDir targetDir(srcFilePath); 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 */ QString str = fileInfo.filePath(); QString strTar = targetDir.filePath(fileInfo.fileName()); if (!copyDirectoryFiles(str, strTar, 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; } bool FileUtil::importEngineerFile() { QFileDialog::Options options; options |= QFileDialog::DontUseNativeDialog; QString srcDirPath = QFileDialog::getExistingDirectory(nullptr, "导入资源包", "/", options); qDebug() << "importEngineerFile-------" << srcDirPath; if (srcDirPath.isEmpty() || srcDirPath.size() <= 0) { return false; } QSettings config("config.ini", QSettings::IniFormat); config.setIniCodec("UTF-8"); QString sysDbPath = QCoreApplication::applicationDirPath(); sysDbPath += config.value("USERCONFIG/DbPath", "").toString(); bool result = FileUtil().copyDirectoryFiles(sysDbPath, srcDirPath, true); return result; }