FileUtil.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "FileUtil.h"
  2. #include <QCoreApplication>
  3. #include <QFileDialog>
  4. #include <QSettings>
  5. #include <QDebug>
  6. #include <qdir.h>
  7. FileUtil::FileUtil() { }
  8. bool FileUtil::copyDirectoryFiles(QString &srcFilePath, QString &tgtFilePath, bool coverFileIfExist)
  9. {
  10. QDir sourceDir(tgtFilePath);
  11. QDir targetDir(srcFilePath);
  12. if (!targetDir.exists()) { /**< 如果目标目录不存在,则进行创建 */
  13. if (!targetDir.mkdir(targetDir.absolutePath()))
  14. return false;
  15. }
  16. QFileInfoList fileInfoList = sourceDir.entryInfoList();
  17. foreach (QFileInfo fileInfo, fileInfoList) {
  18. if (fileInfo.fileName() == "." || fileInfo.fileName() == "..")
  19. continue;
  20. if (fileInfo.isDir()) { /**< 当为目录时,递归的进行copy */
  21. QString str = fileInfo.filePath();
  22. QString strTar = targetDir.filePath(fileInfo.fileName());
  23. if (!copyDirectoryFiles(str, strTar, coverFileIfExist))
  24. return false;
  25. } else { /**< 当允许覆盖操作时,将旧文件进行删除操作 */
  26. if (coverFileIfExist && targetDir.exists(fileInfo.fileName())) {
  27. targetDir.remove(fileInfo.fileName());
  28. }
  29. /// 进行文件copy
  30. if (!QFile::copy(fileInfo.filePath(),
  31. targetDir.filePath(fileInfo.fileName()))) {
  32. return false;
  33. }
  34. }
  35. }
  36. return true;
  37. }
  38. bool FileUtil::importEngineerFile()
  39. {
  40. QFileDialog::Options options;
  41. options |= QFileDialog::DontUseNativeDialog;
  42. QString srcDirPath = QFileDialog::getExistingDirectory(nullptr, "导入资源包", "/", options);
  43. qDebug() << "importEngineerFile-------" << srcDirPath;
  44. if (srcDirPath.isEmpty() || srcDirPath.size() <= 0) {
  45. return false;
  46. }
  47. QSettings config("config.ini", QSettings::IniFormat);
  48. config.setIniCodec("UTF-8");
  49. QString sysDbPath = QCoreApplication::applicationDirPath();
  50. sysDbPath += config.value("USERCONFIG/DbPath", "").toString();
  51. bool result = FileUtil().copyDirectoryFiles(sysDbPath, srcDirPath, true);
  52. return result;
  53. }