File file = new File(realpath);
String []dir = file.list();
String tempfile = "";

 for (int i=0;i<dir.length;i++){
   for(int j=dir.length-1;j>=i;j--){    //降序
      if(j!=dir.length-1){
          File file2 = new File(realpath+"\\"+dir[j]);   
          File file3 = new File(realpath+"\\"+dir[j+1]);
  
if(file2.lastModified() < file3.lastModified()){ //根据文件修改最后时间排序
tempfile = dir[j+1];
dir[j+1] = dir[j];
dir[j] = tempfile;
  }
 
     }
}
这样可以实现根据最后修改时间排序了
现在要把他改成类似WINDOWS资源管理器里的排序方式
也就是文件夹根据修改时间排前面,排完后在按修改时间列出文件。。
怎么实现

解决方案 »

  1.   

    定义一个比较器Comparator,再用java.util.Arrays.sort(Object[],Comparator)来排序
      

  2.   

    public static void test(final String realpath) {
            File file = new File(realpath);
            String[] dir = file.list();
            String tempfile = "";
            
            class MyComparator implements java.util.Comparator{
                public int compare(Object o1, Object o2){
                    String s1=(String)o1;
                    String s2=(String)o2;
                    File file1 = new File(realpath+"\\"+s1);
                    File file2 = new File(realpath+"\\"+s2);
                    if (file1.isDirectory()&&file2.isFile()){
                        return -1;
                    } else if(file2.isDirectory()&&file1.isFile()){
                        return 1;
                    } else {
                        long result=file1.lastModified() - file2.lastModified();
                        return (result<0)?-1:(result>0)?1:0;
                    }
                }
            }
            java.util.Arrays.sort(dir,new MyComparator());
            
            for (int i=0;i<dir.length;i++){
                System.out.println(dir[i]);
            }
        }
      

  3.   

    碰巧蒙对了long result=file2.lastModified() - file1.lastModified();改了这个就降序了不过还是不理解这几个代码 可能没用到这个比较器的缘故吧 我去网上搜文章看吧  结帖了 谢谢兄弟了