首页 > 编程语言 >java 每天23点定时删除某个Folder下的文件

java 每天23点定时删除某个Folder下的文件

时间:2023-08-17 23:33:36浏览次数:36  
标签:24 java 23 LocalDateTime 60 ScheduledExecutorService import Folder

import java.io.IOException;
import java.nio.file.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class FileDeletionExample {
    public static void main(String[] args) {
        // 指定文件夹路径
        String folderPath = "E:/pdt/aa/08-17";
        
        // 获取当前日期和目标时间(每天23点)
        LocalDate currentDate = LocalDate.now();
        LocalTime targetTime = LocalTime.of(23, 0, 0);
        
        // 构造触发删除的日期时间对象
        LocalDateTime targetDateTime = LocalDateTime.of(currentDate, targetTime);

        // 计算初始延迟时间和循环周期
        long initialDelay = LocalDateTime.now().until(targetDateTime, ChronoUnit.SECONDS);
        long period = 24 * 60 * 60;  // 24小时
        
        // 创建ScheduledExecutorService
        ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
        
        // 定时执行删除操作
        executorService.scheduleAtFixedRate(() -> {
            try {
                deleteFiles(folderPath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }, initialDelay, period, TimeUnit.SECONDS);
    }

    private static void deleteFiles(String folderPath) throws IOException {
        // 创建Path对象
        Path directory = Paths.get(folderPath);
        
        // 遍历文件夹下的所有文件并删除
        try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(directory)) {
            for (Path path : directoryStream) {
                if (Files.isRegularFile(path)) {
                    Files.delete(path);  // 删除文件
                }
            }
        }
    }
}

这段代码做了以下几个步骤:

  1. 构造了每天的目标时间,即每天的23点。
  2. 计算当前时间到目标时间的初始延迟时间和循环周期。初始延迟时间是当前时间到目标时间的秒数差值,循环周期为24小时(24 * 60 * 60秒)。
  3. 使用ScheduledExecutorService创建一个单线程的定时任务执行器。
  4. 使用scheduleAtFixedRate方法,按照设定的循环周期触发定时任务。定时任务会在每天的目标时间执行,并调用deleteFiles方法进行文件删除操作。

标签:24,java,23,LocalDateTime,60,ScheduledExecutorService,import,Folder
From: https://blog.51cto.com/u_16176998/7128567

相关文章

  • 【NSSCTF逆向】【2023题目】《kunmusic》
    题目kunmusic解法这题还是非常有意思的。打开有很多button,可能是需要按button的次数来得到flag把。这是一个.net的程序,需要用dnspy来反编译他反编译这个dll找到这个入口点可以看到是引入了某片数据,然后进行异或104,进行一个解密。找到这个东西、把他保存下来,然后......
  • Java日志系列:日志门面JCL、SLF4J
    目录一、日志门面说明二、JCL使用JCL入门JCL原理三、SLF4J使用配合自身简单日志实现(slf4j-simple)配置logback日志实现配置Log4J日志实现(需适配器)配置JUL日志实现(需适配器)添加slf4j-nop依赖(日志开关)桥接旧的日志实现框架一、日志门面说明当我们的系统变的更加复杂的......
  • 2023/8/17
    今天去天大报到为了省事,决定自驾去学校将近3.5h的车程,其实还好,完全可以接受(除了早起)十点到了宿舍,登记完信息后被宿管阿姨告知要先去报到但是群里却说先去宿舍,晕了中午挺热的,流了好多汗嗯,被MHK的宿舍图片误导了,实际上只是标准的四人间罢了我还以为所有人都能分到有楼梯......
  • 【愚公系列】2023年08月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 20230816巴蜀暑期集训测试总结
    T1这题一看就很难实现,事实也确实是这样,考场想了半个多小时没有思路,打完暴力就跳了。这道题的正解技巧和思维性很强,不是很套路,只是融合了一些线段树区间操作的思想。感觉......怎么会评蓝呢?这T4一道紫题都明显比T1好做啊!关键T1的考场通过率竟然最高!大概思路就是,变化会形......
  • 黑魂233 导演动画和代码联动
    给Director物体新建一个脚本,TesterDirector 然后将Director插件放进pd变量里: 在代码里添加导演动画激活的按钮:只要按下T键,就会执行。前提是得先把PlayOnWake消钩。 然后再添加这几个代码,让导演动画可以重复播放: ......
  • 有感 2023/8/17
    动态规划其实就是分类讨论,只是在分类讨论后是用递归求解即可(本质上是记忆化搜索)。想到数学上的计数问题,我们分的类要覆盖到所有的情况,要满足问题中的每一个限制;分的每一类内部可以用人的脑子求出。对于动态规划问题也一样,如果是计数,状态的设计也要不重不漏,要满足问题中的每一个限......
  • 老杜 JavaWeb 讲解(二十一)——通过银行账户转账业务讲解MVC架构
    老杜-通过银行账户转账业务讲解MVC架构老杜-银行账户转账(mvc001)这个项目将层层迭代,最终成为MVC架构的项目。老杜第一次写代码并没有使用JDBC的封装类,但大差不差,这里即使用了之前的DBUtil.java,代码依然很杂乱。建立数据库数据库名:mvc字符集:utf8mb4排序规则:utf8mb4_unicod......
  • 在Java中print//printf//和println的区别
    1.printprint在JAVA中常常使用System.out.pirnt();的输出格式。在Java中进行一般的输出语句。例子如下: 输出 可见其不会换行。2.printfprintf在JAVA中常常使用System.out.printf();的格式。在Java中printf常用于格式转换,但需要注意不是换行输出,只用于精度转换。例子如......
  • 高频SQL 50题(基础版): 员工奖金 | 2023-08-17
    问题表:Activity+----------------+---------+|ColumnName|Type|+----------------+---------+|machine_id|int||process_id|int||activity_type|enum||timestamp|float|+----------------+---------+该表展示......