这里实现删除指定距离当前时间之前多少天的数据,可以自己传入time控制时间间隔,如果只想删除所有的文件,去掉代码中关于时间条件的判断即可。
/**
* 删除指定时间之前的文件
* @param directory
* @param time
*/
private void deleteFile(File directory, long time){
if (directory.isFile()){
if (directory.lastModified() +time < new Date().getTime()){
directory.delete();
}
}else {
File[] files = directory.listFiles();
//此处有个巧妙之处是当是当递归到空文件夹时,数组的长度为空,但是files不是null,forEach会忽略掉不去执行,
//而且最开始的if语句排除了文件,当listFiles的执行对象是一个真文件而不是文件夹时会返回null,
//此处为null的情况也被前面的条件规避了,因此此处不需要判断数组为空或者为null
for(File direc : files){
deleteFile(direc,time);
}
//递归结束抛出一层删一层(这时候的删除文件夹肯定是空文件夹,不是空文件夹是删不掉的)
directory.delete();
}
}