如何按照顺序读取文件夹内的文件名:
如输出(1.jpg、2.jpg、3.jpg、10.jpg、11.jpg、20.jpg、21.jpg、31.jpg)
// 图片 文件夹
File imgFile = new File(imgFilePath);
// 图片文件夹路径不存在,则创建
if (!imgFile.exists()) {
imgFile.mkdirs();
}else {
// 存在图片,则直接获取
String[] list = imgFile.list(); //获取文件夹内的所有文件名
if(list != null){
//深拷贝 //浅拷贝 Arrays.asList(list)
for (String name : list) {
imgURList.add(name); //把文件名放入list里面
}
// 对 list 排序
Collections.sort(imgURList);
}
// 对 list 排序 Collections.sort(imgURList);
但是它输出的是:(1.jpg、10.jpg、11.jpg、2.jpg、20.jpg、21.jpg、3.jpg、31.jpg)
不是我想要的按**数字大小**来排序的
我想要输出(1.jpg、2.jpg、3.jpg、10.jpg、11.jpg、20.jpg、21.jpg、31.jpg)
请教大神们,谁做过没有呢??
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* FileString
*
* @author littlehow
* @time 2017-03-30 19:03
*/
public final class FileString implements Comparable<FileString> {
private final String fileName;
private final int prefix_num;
Pattern number = Pattern.compile("(\\d+)\\..*");
public FileString(String fileName) {
this.fileName = fileName;
Matcher matcher = number.matcher(fileName);
if (matcher.find()) {
prefix_num = Integer.parseInt(matcher.group(1));
} else {
prefix_num = 0;
}
}
@Override
public int compareTo(FileString o) {
return o.prefix_num > prefix_num ? -1 : o.prefix_num == prefix_num ? 0 : 1;
}
@Override
public String toString() {
return fileName;
}
}
然后把你的imgURList申明为ArrayList<FileString>
然后imgURList.add(new FileString(name));
后面的就不需要变了,sort后,就会按照你的要求排序了;
如果有帮助,希望采纳....