0
点赞
收藏
分享

微信扫一扫

java 定时任务实现 每隔10天 删除指定文件夹下的文件

  1. 使用ScheduledExecutorService 实现

要在Java中实现每隔 10 天删除文件夹下的文件,可以使用定时任务来执行此操作。可以使用Java中的 ScheduledExecutorService 类来创建和管理定时任务,并使用 File 类来删除文件。

示例代码,用于实现每隔 10 天删除文件夹下的文件:

import java.io.File;
import java.time.LocalDate;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class FileDeletionTask {
    public static void main(String[] args) {
        // 创建 ScheduledExecutorService 对象
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

        // 定义删除任务
        Runnable deletionTask = () -> {
            String folderPath = "/path/to/folder"; // 文件夹路径

            File folder = new File(folderPath);

            // 检查文件夹是否存在
            if (folder.exists() && folder.isDirectory()) {
                // 获取当前日期
                LocalDate currentDate = LocalDate.now();

                // 遍历文件夹下的文件
                for (File file : folder.listFiles()) {
                    long lastModifiedTime = file.lastModified();
                    LocalDate modifiedDate = LocalDate.ofEpochDay(lastModifiedTime / (24 * 60 * 60 * 1000));

                    // 如果文件修改日期在当前日期的前 10 天之前,则删除文件
                    if (currentDate.minusDays(10).isAfter(modifiedDate)) {
                        file.delete();
                        System.out.println("已删除文件:" + file.getName());
                    }
                }
            }
        };

        // 创建定时任务,每隔 10 天执行一次
        executor.scheduleAtFixedRate(deletionTask, 0, 10, TimeUnit.DAYS);
    }
}

使用 ScheduledExecutorService 创建了一个单线程的定时任务执行器。然后,定义了一个删除任务 deletionTask,其中指定了要删除的文件夹路径。在任务中,我们获取当前日期,并遍历文件夹下的文件。对于每个文件,将其最后修改日期与当前日期进行比较,如果该文件修改日期在当前日期的前 10 天之前,则删除该文件。

最后,通过调用 executor.scheduleAtFixedRate 方法创建定时任务,指定任务首次执行延迟时间为 0 天,之后每隔 10 天执行一次删除任务。

  1. 使用 Timer 实现

使用 Timer 定时任务来实现每隔 10 天删除文件夹下的文件

  1. 创建一个任务类来执行文件删除操作。可以创建一个名为 FileDeletionTask 的类,并在其中定义一个方法 deleteFiles(),用于删除文件夹下的文件。

import java.io.File;
import java.time.LocalDate;
import java.util.TimerTask;

public class FileDeletionTask extends TimerTask {
    public void deleteFiles() {
        String folderPath = "/path/to/folder"; // 文件夹路径

        File folder = new File(folderPath);

        // 检查文件夹是否存在
        if (folder.exists() && folder.isDirectory()) {
            // 获取当前日期
            LocalDate currentDate = LocalDate.now();

            // 遍历文件夹下的文件
            for (File file : folder.listFiles()) {
                long lastModifiedTime = file.lastModified();
                LocalDate modifiedDate = LocalDate.ofEpochDay(lastModifiedTime / (24 * 60 * 60 * 1000));

                // 如果文件修改日期在当前日期的前 10 天之前,则删除文件
                if (currentDate.minusDays(10).isAfter(modifiedDate)) {
                    file.delete();
                    System.out.println("已删除文件:" + file.getName());
                }
            }
        }
    }

    @Override
    public void run() {
        deleteFiles();
    }
}

创建测试类:

import java.util.Timer;

public class Main {
    public static void main(String[] args) {
        Timer timer = new Timer();

        // 创建任务对象
        FileDeletionTask fileDeletionTask = new FileDeletionTask();

        // 调度任务,在每隔 10 天执行一次
        timer.schedule(fileDeletionTask, 0, 10 * 24 * 60 * 60 * 1000);
    }
}

使用 Timer 类创建了一个定时器对象 timer。然后,我们创建了一个 FileDeletionTask 对象 fileDeletionTask,用于执行文件删除操作。最后,使用 timer.schedule() 方法调度任务,第一个参数是任务对象,第二个参数是延迟时间(此处设置为 0,表示立即执行),第三个参数是任务的周期(每隔 10 天执行一次)


举报

相关推荐

0 条评论