自己动动手嘛。JAVA又不会搞死你的系统。

解决方案 »

  1.   

    应该没有多大问题,我试过用一个ArrayList保存winnt下的所有文件(10068个文件),然后再打印出来,大概9秒(我机器的配置Athlon850+256M)。
    public class GetDirRes {
        private String dir;
        public GetDirRes(String dir) {
            this.dir=dir;
        }
        public ArrayList getFilesArr() {
            ArrayList files = new ArrayList();
            try {
                File f = new File(dir);
                String[] all = f.list();
                for(int i=0;i<all.length;i++) {
                    File single = new File(dir + "\\" + all[i]);
                    if(single.isFile()) {
                        files.add(single);
                    } else {
                        ArrayList al = new GetDirRes(single.toString()).getFilesArr();
                        for(int j=0;j < al.size();j++)
                            files.add((File)al.get(j));
                    } 
                }
            } catch (Exception e) {
                System.err.println("General Excetion occur. " + e.getMessage());
            }
            return files;
        }
        public static void main(String[] args) {
            GetDirRes g =new GetDirRes("c:\\winnt");
            ArrayList al = g.getFilesArr();
            System.out.println("getFilesArr():" + al.size() + " all files list:");
            for(int i=0;i<al.size();i++) {
                System.out.println(al.get(i));
            }
        }
    }
      

  2.   

    这个问题不会有很大影响的
    因为这和操作系统与JVM有关系吧
    JAVA程序不会是在硬盘上遍历搜索的,应该是 读取了文件系统的索引表,然后找到符合条件的文件的
    不知道我的理解对不对,大家讨论
      

  3.   

    几万个文件的检索应该是没有问题的,如果你要提高速度,可以在检索算法上下点功夫就行了,
    另外,你要做什么样的东西,比如你是做一个类似explorer的,遇到目录不必取其下的FileList,可以等到激活这个目录之后再取都可以的,所以,这个不必操心。