扫描文件目录得到文件集合List后排序时需要自定义规则(List集合不能对元素类型为File的进行排序)
核心方法:
Collections.sort(List<T> list, Comparator<? super T> c)
备注:以下还对要扫描的文件进行过滤(即只取txt文件)
File file = new File(filePath);
File[] files = file.listFiles(new TxtFilter());
List<File> sortfiles = Arrays.asList(files);
Collections.sort(sortfiles, new Comparator<File>(){
public int compare(File o1, File o2) {
return o1.getName().compareTo(o2.getName());
}
});
class TxtFilter implements FilenameFilter{
public boolean accept(File filePath, String fileName) {
return isTxt(fileName);
}
boolean isTxt(String fileName){
if(fileName.toLowerCase().endsWith("txt")){
return true;
}
return false;
}
}
后记:compareTo是String类中的方法
一般对扫描后的文件排序时按最后修改时间排序,此时需要对compareTo做转换操作(最后修改时间是long型,转换为String类型)
Collections.sort(sortfiles, new Comparator<File>(){
public int compare(File o1, File o2) {
String str1 = String.valueOf(o1.lastModified());
String str2 = String.valueOf(o2.lastModified());
return str1.compareTo(str2);
}
});