Procházet zdrojové kódy

新增删除文件定时任务

zhangchenglong před 1 rokem
rodič
revize
d69a62f2c1

+ 27 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/job/DeleteFileJob.java

@@ -0,0 +1,27 @@
+package com.jiayue.insu.inclientqn.job;
+
+import com.jiayue.insu.inclientqn.util.FileUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * @description: 检修计划定时下载任务
+ * @author: yuanhao
+ * @createDate: 2022/6/17
+ * @version: 1.0
+ */
+public class DeleteFileJob implements Job {
+
+    @Value("${deleteFile.path}")
+    private String path;
+
+    @Value("${deleteFile.howLongAgo}")
+    private int howLongAgo;
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        // 删除指定路径和时间的数据
+        FileUtils.deleteFiles(path,howLongAgo);
+    }
+}

+ 61 - 0
in-client-qn/src/main/java/com/jiayue/insu/inclientqn/util/FileUtils.java

@@ -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());
+                        }
+                    }
+                }
+            }
+        }
+    }
+}