当前位置: 代码迷 >> J2SE >> java遍历秒现,该如何解决
  详细解决方案

java遍历秒现,该如何解决

热度:1254   发布时间:2013-02-25 00:00:00.0
java遍历秒现
最近在就纠结一个问题,听别人说遍历一个10W文件的磁盘能做到秒现,只是怎么能做到秒现的,我是初学者,希望各位大侠指点指点下面是我自己写的程序,遍历一次也要30秒吧
Java code
package test.io;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class AllFile {    static File newFile = new File("F:" + File.separator + "test01.txt");    static int count = 1;    public static void main(String[] args) {        showAllFile(new File("C:"+File.separator));    }    static void showAllFile(File file){        if(file.isFile()){            try {                FileOutputStream fos = new FileOutputStream(newFile,true);            } catch (FileNotFoundException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            count++;        }else if (file.isDirectory()) {            File list[] = file.listFiles();            if (list != null) {                //使用递归获取每个文件夹                for (File ls : list) {                    showAllFile(ls);                    System.out.println(ls);                    System.out.println(count);                }            }        }    }}


------解决方案--------------------------------------------------------
一般提高遍历就是建立一个引索,存放文件名和修改时间
从根目录开始根据修改时间判断是否要进入文件夹递归
这样能少做很多递归~节提高了效率咯
还有就是递归效率普遍比迭代要低的。递归10次就要挂着10个方法,底层来说就是压了10次栈,还要再出10次栈,能快吗?建议改成迭代算法
  相关解决方案