FolderOperation.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "QWorld.h"
  2. #include "QDateTime"
  3. #pragma region 文件夹操作
  4. #pragma region 删除N天前的文件
  5. //删除N天前的文件
  6. bool FolderOperation::FindFileForDelete(QString key, QString path, int day)
  7. {
  8. if (key != "59226f4700f1cc8a5de755d501af308d2d2")
  9. {
  10. return false;
  11. }
  12. try
  13. {
  14. QDateTime now = QDateTime::currentDateTime();
  15. QDateTime dateTime1 = now.addDays(day);
  16. QDateTime dateTime2;
  17. QDir dir(path);
  18. QFileInfoList fileList = dir.entryInfoList();
  19. for (QFileInfo f : fileList)
  20. {
  21. if (f.baseName() == "")
  22. {
  23. continue;
  24. }
  25. dateTime2 = f.created();
  26. if (dateTime2 < dateTime1)
  27. {
  28. dir.remove(f.absoluteFilePath());
  29. }
  30. }
  31. return true;
  32. }
  33. catch (...)
  34. {
  35. return false;
  36. }
  37. }
  38. #pragma endregion
  39. #pragma region 删除N天前的文件夹
  40. //删除N天前的文件夹
  41. bool FolderOperation::FindFolderForDelete(QString key, QString path, int day)
  42. {
  43. if (key != "59226f4700f1cc8a5de755d501af308d2d2")
  44. {
  45. return false;
  46. }
  47. try
  48. {
  49. QList<QString> dirs;
  50. dirs.reserve(1000);
  51. dirs.clear();
  52. QDir dir(path);
  53. dir.setFilter(QDir::Dirs);
  54. for (auto fullDir : dir.entryInfoList())
  55. {
  56. if (fullDir.fileName() == "." || fullDir.fileName() == "..")
  57. continue;
  58. dirs.push_back(fullDir.absoluteFilePath());
  59. }
  60. if (dirs.size() < day)
  61. {
  62. return false;
  63. }
  64. else
  65. {
  66. QList<quint64> times = QList<quint64>();
  67. times.reserve(1000);
  68. times.clear();
  69. QList<QString> folder = QList<QString>();
  70. folder.reserve(1000);
  71. folder.clear();
  72. for (auto dir : dirs)
  73. {
  74. QFileInfo fl(dir);
  75. QDateTime DT = fl.created();
  76. QDateTime dt0(QDate(1970, 1, 1));
  77. quint64 time = DT.toTime_t() - dt0.toTime_t();
  78. times.append(time);
  79. folder.append(dir);
  80. }
  81. //获取数组中最小值的索引
  82. int index = -1;
  83. QVector<quint64> max_and_min(2);
  84. if (times.size() != 0)
  85. {
  86. max_and_min[1] = times[0];
  87. index = 0;
  88. for (int i = 0; i < times.size(); i++)
  89. {
  90. if (max_and_min[1] > times[i])
  91. {
  92. index = i;
  93. max_and_min[1] = times[i];
  94. }
  95. }
  96. }
  97. QDir dir_x;
  98. if (dir_x.exists(folder[index]))
  99. {
  100. dir_x.setPath(folder[index]);
  101. dir_x.removeRecursively();
  102. }
  103. return true;
  104. }
  105. }
  106. catch (...)
  107. {
  108. return false;
  109. }
  110. }
  111. #pragma endregion
  112. #pragma endregion