|
@@ -0,0 +1,61 @@
|
|
|
+package com.jiayue.insu.inclientqn.util;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+public class FileUtils {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除3天前的文件
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static void deleteFiles(String directoryPath,int howLongAgo){
|
|
|
+ File directory = new File(directoryPath);
|
|
|
+ // 获取当前日期
|
|
|
+ LocalDate currentDate = LocalDate.now();
|
|
|
+ // 获取昨天日期
|
|
|
+ LocalDate yesterdayLocalDate = currentDate.minusDays(howLongAgo);
|
|
|
+ // 创建昨天的零点时间
|
|
|
+ LocalDateTime yesterdayMidnight = LocalDateTime.of(yesterdayLocalDate, LocalTime.MIDNIGHT);
|
|
|
+ // 将 LocalDateTime 转换为 Date
|
|
|
+ Date yesterday = Date.from(yesterdayMidnight.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ // 如果文件夹存在,则调用删除文件方法
|
|
|
+ if (directory.exists() && directory.isDirectory()) {
|
|
|
+ deleteOldFilesRecursive(directory,yesterday);
|
|
|
+ } else {
|
|
|
+ System.out.println("指定目录不存在或不是一个目录。");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除超期文件
|
|
|
+ * @param directory
|
|
|
+ * @param yesterday
|
|
|
+ */
|
|
|
+ public static void deleteOldFilesRecursive(File directory,Date yesterday) {
|
|
|
+ File[] files = directory.listFiles();
|
|
|
+ if (files != null) {
|
|
|
+ for (File file : files) {
|
|
|
+ if (file.isDirectory()) {
|
|
|
+ // 如果是子目录,递归处理子目录内的文件
|
|
|
+ deleteOldFilesRecursive(file,yesterday);
|
|
|
+ } else if (file.isFile()) {
|
|
|
+ Date fileCreationDate = new Date(file.lastModified());
|
|
|
+
|
|
|
+ if (fileCreationDate.before(yesterday)) {
|
|
|
+ // 删除创建时间早于今天的文件
|
|
|
+ if (file.delete()) {
|
|
|
+ System.out.println("已删除文件: " + file.getAbsolutePath());
|
|
|
+ } else {
|
|
|
+ System.out.println("无法删除文件: " + file.getAbsolutePath());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|