前几天一个网上的朋友的课题,根据文件最后修改日期来判断是否删除。
代码里的delete被注释了,测试的时候请注意别误删文件。
想写成多线程的,不知道有没有兄弟愿意帮忙看下package Test;
import java.io.File;
import java.util.Date;
import java.util.Scanner;public class ListFile {
private static long c = 0 ;
private static int count = 0;
public static File choose(File[] roots) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入你需要遍历的盘符(格式为: D:\\):");
// 用户输入要遍历的盘符
String clientRoot = sc.next();
// 判断用户要遍历的盘符
for (int i = 0; i < roots.length; i++) {
if (roots[i].toString().equals(clientRoot))
return roots[i];
}
// 查找无结果,退出
return roots[0];
}
// 利用递归遍历所有文件夹
public static void find(File file) {
long time = new Date().getTime();
long n = c * 24 * 3600*1000;//设定天数转为毫秒作单位
try {
if (file.isDirectory()) {
System.out.println(file + "文件夹下有:");
File[] files = file.listFiles();
System.out.println(files.length);
for (int i = 0; i < files.length; i++) {
find(files[i]);
String a = files[i].getAbsolutePath();
System.out.println(a);
File f = new File(a);
long modifiedTime = f.lastModified();
long bl = time - modifiedTime;
Date d = new Date(modifiedTime);
System.out.println(a + "当前时间是" + d);
if (bl > n) {
System.out.println("当前时间"+time+" 最后修改"+modifiedTime+" 输入天数"+n+" 当前时间-修改时间"+bl);
System.out.println("文件最后修改时间:"+d);
System.out.println("超过设定时间段");
//files[i].delete();
// 当检测到文件超过设定时间段则删除
System.out.println("删除成功\n_____________________________________________");
count++;
// filelist.add(a);

// filelist.add(file.getAbsolutePath());
}
}
if(file.isFile()){
long modifiedTime = file.lastModified();
long bl = time - modifiedTime;
Date d = new Date(modifiedTime);
if (bl > n) {
System.out.println("当前时间"+time+" 最后修改"+modifiedTime+" 输入天数"+n+" 当前时间-修改时间"+bl);
System.out.println("文件最后修改时间:"+d);
System.out.println("超过设定时间段");
//file.delete();
// 当检测到文件超过设定时间段则删除
System.out.println("删除成功\n_____________________________________________");
count++;
// filelist.add(a);

}
} catch (NullPointerException e) {
System.out.println("文件夹拒绝访问\n截止到當前共發現"+count+"個文件");
//e.printStackTrace();
}
}
public static void main(String[] args) {
// // 获取系统根
File[] roots = File.listRoots();
// 列出用户所选择的盘的内容
File[] file = choose(roots).listFiles();
System.out.println("刪除天數設定:");
Scanner scan = new Scanner(System.in);
c = scan.nextInt();
for (int j = 0; j < file.length; j++) {
find(file[j]);
}
System.out.println("共删除"+count+"个文件");

}}