我在一个路径下有1000个文件
依次为1,2,3,4,5...........1000我是用了
File f = new File(path);
File[] t = f.listFiles(); 这个方法来读取这个路径下的文件
但是最后结果顺序为
1,10,100,1000,101...我怎么做才能让它读取的顺序为1,2,3......1000?
依次为1,2,3,4,5...........1000我是用了
File f = new File(path);
File[] t = f.listFiles(); 这个方法来读取这个路径下的文件
但是最后结果顺序为
1,10,100,1000,101...我怎么做才能让它读取的顺序为1,2,3......1000?
File[] t = f.listFiles();//创建数组,未排序
String[] strArray = {"11","1","2","12"};
Arrays.sort(strArray);//调用此方法,实现默认排序
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]); //1 11 12 2
}
说明:字符串排序是按首字母比较第一位,相同再比较第二位,依次类推,所以产生了一述结果
那么如何才能改变默认排序呢?
public class StringComparetor implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
int i1 = Integer.parseInt(o1);
int i2 = Integer.parseInt(o2);
if(i1>i2){
return 1;
}else if(i1<i2){
return -1;
}
return 0;
}
}说明:定义一个实现了Comparator接口的类,它是对排序规则的定义,具体应用规则到网上去查一下就可以了,很多的
String[] strArray = {"11","1","2","12"};
Arrays.sort(strArray,new StringComparetor());//自定义排序
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]);//1 2 11 22
}
得到了我们想要的结果,针对于你的问题,我写的一个实例,你直接贴到你的代码中就可以用了:
import java.io.File;
import java.util.Comparator;
public class FileComparator implements Comparator<File> { @Override
public int compare(File file01, File file02) {
System.out.println();
int file01name = Integer.parseInt(file01.getName().substring(0,file01.getName().indexOf('.')));
int file02name = Integer.parseInt(file02.getName().substring(0,file02.getName().indexOf('.')));
if(file01name>file02name){
return 1;
}else if(file02name<file02name){
return -1;
}
return 0;
}}import java.io.File;
import java.util.Arrays;
public class SortTest { public static void main(String[] args){
File file = new File("f:/test");
File[] files = file.listFiles();
Arrays.sort(files,new FileComparator());
for(int i=0;i<files.length;i++){
System.out.println(files[i].getName());
}
}
}
http://topic.csdn.net/t/20030108/10/1337549.html
-