当前位置:编程学习 > JAVA >>

急求 文件 排序!!!

有10000条文件 按文件名排序 放到listView中 要求排序后把文件夹列在前 文件列在后
有什么好的办法 不要通过isFile或isDirectory判断是文件还是文件夹 
太耗时 --------------------编程问答-------------------- 得到的 --------------------编程问答-------------------- 嘛意思? --------------------编程问答-------------------- 不这么判断还有什么办法呢?
难道你的item不是一条一条加进去的吗?

是不是实测速度慢?
将文件名全部取出后,先在List里面排好序,然后再依次add到ListView中去,应该能节约一些重复刷新GUI界面的时间开销。 --------------------编程问答-------------------- 不判断怎么知道是文件夹还是文件?不知道是文件夹还是文件,又怎么能分出让文件夹在前,文件在后
首先想知道一下,你的10000条文件是怎么来?带有什么可判断的信息吗?
--------------------编程问答--------------------

/*除非你的文件和文件夹有明确的区别,比如你的文件名都是带有“.”号这样的特征或者你能保证所有文件都是非空文件,解决方法就多种多样了,但这些不是文件的必备条件,所以写法上不推荐
我还是觉得利用isDirectory方法边判断边加入HashSet好点,示例代码:
*/
import java.io.*;
import java.util.*;

public class DistinguishFileAndFolder {
    
    static Set<String> folderSet = new TreeSet<String>();//TreeSet会自动对String排序
    static Set<String> fileSet = new TreeSet<String>();
    static List<String> listView = new ArrayList<String>();
    
    public static void main(String[] args) {
String fileName = "C:/WINDOWS/system32/drivers";
File f = new File(fileName) ;
treeFiles(f);

listView.addAll(folderSet);//所有文件夹在前面
listView.addAll(fileSet);//所有文件夹在后面

System.out.println(folderSet);
System.out.println(fileSet);
System.out.println(listView);

    }
    
    public static void treeFiles(File file) {//递归列举指定文件夹中的文件
File[] files = file.listFiles();
for(int i=0; i<files.length ; i++) {     
    if(files[i].isDirectory()) {
folderSet.add(files[i].getName());
treeFiles(files[i]);//如果是文件夹,也许文件夹里还有子文件夹和文件
    }
    else {
fileSet.add(files[i].getName());
    }
}
    }
}


补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,