FileUtil.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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::copyFileToPath(QString sourceDir, QString toDir, bool coverFileIfExist)
  39. {
  40. toDir.replace("\\", "/");
  41. if (sourceDir == toDir) {
  42. return true;
  43. }
  44. if (!QFile::exists(sourceDir)) {
  45. return false;
  46. }
  47. QDir *createfile = new QDir;
  48. bool exist = createfile->exists(toDir);
  49. if (exist) {
  50. if (coverFileIfExist) {
  51. createfile->remove(toDir);
  52. }
  53. } // end if
  54. if (!QFile::copy(sourceDir, toDir)) {
  55. return false;
  56. }
  57. return true;
  58. }
  59. bool FileUtil::importEngineerFile()
  60. {
  61. QFileDialog::Options options;
  62. options |= QFileDialog::DontUseNativeDialog;
  63. QString srcDirPath = QFileDialog::getExistingDirectory(nullptr, "导入资源包", "/", options);
  64. qDebug() << "importEngineerFile-------" << srcDirPath;
  65. if (srcDirPath.isEmpty() || srcDirPath.size() <= 0) {
  66. return false;
  67. }
  68. QSettings config("config.ini", QSettings::IniFormat);
  69. config.setIniCodec("UTF-8");
  70. QString sysDbPath = QCoreApplication::applicationDirPath();
  71. sysDbPath += config.value("USERCONFIG/DbPath", "").toString();
  72. bool result = FileUtil().copyDirectoryFiles(sysDbPath, srcDirPath, true);
  73. return result;
  74. }