因项目需求,需要删除某一文件夹中7天之前的所有文件,仅保留7天之内的,代码及测试记录如下:
java代码
注意,本代码所描述的“7天”为“7×24”个小时,而不是一个自然日这样的概念。
import java.io.File;
public class FileOperationUtil {
/**
* 删除文件夹中7天前的文件
* @param file 需进行删除处理的文件夹File
* @param time 有效保留时间的毫秒值(本代码中为7天的毫秒值)
*/
public static void deleteFile(File file, long time) {
//得到file里面全部的文件及文件夹
File[] files = file.listFiles();
//遍历files里面的全部的文件及文件夹
for(File f : files) {
//得到绝对路径下的文件及文件夹
File absFile = f.getAbsoluteFile();
if (absFile.isDirectory()){// 如果是目录,则递归调用当前方法,以删除其子文件夹中的超过7天的文件
deleteFile(absFile, time);
}
//计算时间
long currTime = System.currentTimeMillis(); //系统当前时间
long lastTime = absFile.lastModified(); //文件被最后一次修改的时间
//计算时间差
long diffen = currTime - lastTime;
// 如时间差超过有效保留时间,则删除该文件
if(diffen > time) {
absFile.delete();
}
}
}
public static void main(String[] args) {
String path = "D:\\test1\\";//测试文件夹
long time = 7 * 24 * 60 * 60 * 1000;//计算有效保留时间7天的毫秒值
File file = new File(path);
if(file.exists() && file.isDirectory()) { //判断是不是目录
deleteFile(file, time);
}
}
}
测试记录
测试前
以下为执行java代码前,“D:\test1”目录下的所有文件及子文件夹下的所有文件,我当前的测试时间为2023年11月30日15:30。
测试结果
即,超过7天的所有文件已全部被删除。