周末闲暇时间,写了一个小代码。感觉网络上的比较杂乱,因此就贡献一下,分享给需要学习的人,java实现定时删除过期文件。java实现定时删除过期文件(多线程,可以多添加其他路径)
import java.io.File;
import java.util.Date;
/*
* 定时任务 删除 过期 文件 (多线程)
* */
public class DelectFileByTime {
public static void main(String[] args) {
Runnable r1 = new Runnable1();
Thread t1 = new Thread(r1);
t1.start();
}
}
class Runnable1 implements Runnable {
public void run() {//重写run方法
File dir = new File("D:\\test");
while (true) {
try {
Thread.sleep(10);//实现定时去删除
System.out.println("测试定时");
delect(dir);//删除方法
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private static void delect(File file) {//递归删除文件
Long ftime = file.lastModified();
Date now = new Date();
Long ntime = now.getTime();
Long ms = ntime - ftime;
/*
* 若是文件则直接删除
* 若是目录,要先将目录多有内容删除
* */
if (file.isDirectory()) {
//先清空目录
File[] subs = file.listFiles();
for (File sub : subs) {
/*
* 递归调用 方法内部调用自己方法的行为 称为递归
* 使用要注意:
* 1.递归的层数不要太多,因为递归调用开销较大。
* 2.递归调用在方法中不能必然执行,必须在一个分支
* 中控制它的调用,否则就是死循环。 递归是将一个方法中所有的代码重新执行。
* */
delect(sub);
}
}
if (ms > 1000 * 60 * 5) {//文件保留时间超过5分钟
System.out.println(ms);//测试用
file.delete();//递归删除文件方法
}
}
}
清风徐来_山泉化甘