java读取某个目录下的文件,如1.png, 2.png,… 12.png,网上查找到的方法是:
File[] files = file.listFiles();
if(files==null)return resultFileName;
List<File> fileList = new ArrayList<File>();
for (File f : files) {
fileList.add(f);
}
Collections.sort(fileList, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
if (o1.isDirectory() && o2.isFile())
return -1;
if (o1.isFile() && o2.isDirectory())
return 1;
return o2.getName().compareTo(o1.getName());
}
});
但是此代码排序后的结果会变成 1.png, 10.png, 11.png, 12.png, 2.png…9.png,没有按照升序。
改进方法,增加长度判断。
Collections.sort(fileList, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
if (o1.isDirectory() && o2.isFile())
return -1;
if (o1.isFile() && o2.isDirectory())
return 1;
if(o1.getName().length > o2.getName.length){
return 1;
}else if(o1.getName().length < o2.getName.length){
return -1;
}
return o2.getName().compareTo(o1.getName());
}
});
排序后就按照顺序1,2,3.。。。。12.png