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