java常用类(Timer、TimerTask、File)简单监测文件夹的增加文件
我的想法是检测文件夹里面的每一个文件的修改时间,通过跟当前时间进行比较,如果修改时间在当前之后,便把这个文件遍历出来。
import java.io.File;
import java.util.*;
/**
* 2021/7/23
*/
public class Work2 {
static int n = 0;//计数文件个数
static Date d=new Date();//存储比较的时间
public static void clear(Date da, File dir) {
d=da;//将当前时间赋值给d
new Timer().schedule(new TimerTask() {//匿名类的使用
@Override
public void run() {
readDir(dir,d);
System.out.println("文件总个数"+n);
n=0;//每次执行完赋值为0
}
}, da, 3000);//时间器,从当前时间开始执行,每3秒执行一次
}
public static void readDir(File dir,Date da) {
File[] files = dir.listFiles();//获取当前文件夹下的文件
if (Objects.nonNull(files)) {//判断是否为空
for (File f : files) {//遍历每一个文件夹
long time = f.lastModified();//获得每个文件的毫秒数
Date da1 = new Date(time);//转换Date型,便于时间比肩
if (d.before(da1)) {//比较时间,d是否在da1之前
System.out.println(f.getName()+"\t"+da1+"\t"+f.length());//输出名字,修改时间,大小
d=da1;//将修改时间赋给比教时间
}
if (f.isDirectory()) {//判断是否为文件夹
readDir(f,d);//递归,用于读取子文件夹里的文件
} else {
n++;
}
}
}
}
public static void main(String[] args) {
File file = new File("目标文件夹地址");
Calendar cl=Calendar.getInstance();//获取当前时间
clear(cl.getTime(), file );
}
}
这是我学习java常用类(Timer、TimerTask、File)对它们综合使用的一个小案例,如有错误请多多指出。