概述
本人项目需要获取文件夹里面文件最近的修改时间,函数lastModified直接获取文件夹修改时间,达不到效果。
因此本人通过遍历文件夹文件,来一一比较获取最近的文件里面文件(夹)修改时间。原理简单,下面是所有的代码,给想偷懒的有需要的直接复制粘贴。
功能代码
static long LastModifyTmFiles(String dir) {
File[] files = null;
int i = 0;
long tmpTm = 0;
long tmpTm2 = 0;
files = (new File(dir)).listFiles();
if (files == null || files.length <= 0) {
return 0;
}
tmpTm = 0;
for (i = 0; i < files.length; i++) {
if (files[i].isFile()) {
tmpTm2 = files[i].lastModified();
if (tmpTm < tmpTm2) {
tmpTm = tmpTm2;
}
continue;
}
if (files[i].isDirectory()) {
tmpTm2 = files[i].lastModified();
if (tmpTm < tmpTm2) {
tmpTm = tmpTm2;
}
tmpTm2 = LastModifyTmFiles(files[i].getAbsolutePath());
if (tmpTm < tmpTm2) {
tmpTm = tmpTm2;
}
continue;
}
}
return tmpTm;
}
static Date GetLastModify(String dir) {
Date modifyTm = null;
File file = new File(dir);
long tmpTm = 0;
if (file.isFile()) {
modifyTm = new Date(file.lastModified());
return modifyTm;
} else if (file.isDirectory()) {
tmpTm = LastModifyTmFiles(file.getAbsolutePath());
if (tmpTm < file.lastModified()) {
tmpTm = file.lastModified();
}
modifyTm = new Date(tmpTm);
return modifyTm;
} else {
return null;
}
}
测试代码
public static void main(String[] args) {
//testRsa();
//(new TestThreadLock(0)).start();
//(new TestThreadLock(1)).start();
Date modifyTm = GetLastModify("F:\\Resources");
System.out.println(modifyTm);
}