java实现遍历文件目录,根据文件最后的修改时间排序,并将文件全路径存入List集合...
程序员文章站
2022-05-24 12:28:07
...
package com.ultra.aliyun.control.main;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import org.apache.log4j.Logger;
public class FileTest {
// 打印日志
private static Logger logger = Logger.getLogger(FileTest.class);
public static void main(String[] args) {
// 定义list,用于存储数据文件的全路径
List<String> filelist = new ArrayList<String>();
String dataFileTempDir = "D:\\test";
// 得到返回文件全路径的list集合
List<String> list = getFiles(dataFileTempDir, filelist);
String dataFileTempPath = null;
for (int i = 0; i < list.size(); i++) {
// 数据文件在临时区的路径
dataFileTempPath = list.get(i);
System.out.println(i+"dataFileTempPath:"+dataFileTempPath);
}
}
/**
* 通过递归得到某一路径下所有的文件的全路径,分装到list里面
*
* @param filePath
* @param filelist
* @return
*/
public static List<String> getFiles(String filePath, List<String> filelist) {
File root = new File(filePath);
if (!root.exists()) {
logger.info(filePath + " not exist!");
} else {
File[] files = root.listFiles();
Arrays.sort(files, new FileTest.CompratorByLastModified());
for (File file : files) {
if (file.isDirectory()) {
getFiles(file.getAbsolutePath(), filelist);
} else {
//logger.info("目录:" + filePath + "文件全路径:" + file.getAbsolutePath());
filelist.add(file.getAbsolutePath());
}
}
}
return filelist;
}
//根据文件修改时间进行比较的内部类
static class CompratorByLastModified implements Comparator<File> {
public int compare(File f1, File f2) {
long diff = f1.lastModified() - f2.lastModified();
if (diff > 0) {
return 1;
} else if (diff == 0) {
return 0;
} else {
return -1;
}
}
}
}
转载于:https://my.oschina.net/bigdataer/blog/538306