怎样用递归取出e盘下的所有文件啊,今天想了好长时间,老是出错,请大家帮忙指点下,谢谢啦.....

解决方案 »

  1.   

    public List readDirFiles(String dirName) {//dirName目录全路径
       List fileList=new ArrayList();
       try {
        File file=new File(dirName);
        File[] files=file.listFiles();
        //FileFilter ff=new FileFilter(files);
        for (int i = 0; i < files.length; i++) {
         File tempFile=files[i];
         if(tempFile.isDirectory()){
          String subDirName=tempFile.getPath();
          List list=readDirFiles(subDirName);
          for (int j = 0; j < list.size(); j++) {
           fileList.add(list.get(j));
          }
         }else{
          String fileName=tempFile.getName();
          if (!tempFile.isFile()){
           continue;
          }
          fileList.add(tempFile);
         }
         if(i==(files.length-1)){
          return fileList;
         }
        }
       } catch (Exception e) {
        e.printStackTrace();
        return null;
       }
       return fileList;
    }
      

  2.   


    public static void main(String[] args){
    File root = new File("E:\\");
    loop(root);
    }
    private static void loop(File f){
    System.out.println(f.getAbsolutePath());
    if(f.isDirectory()){
    File[] flist = f.listFiles();
    for(File file:flist){
    loop(file);
    }
    }
    }
      

  3.   

    import java.io.File;
    import java.util.ArrayList;
    public class FileSystem1 {
        private static ArrayList filelist = new ArrayList(); 
        
        public static void main(String[] args) {
            
            long a = System.currentTimeMillis();
            refreshFileList("E:\\");
            System.out.println(System.currentTimeMillis() - a);
        }
        public static void refreshFileList(String strPath) { 
            File dir = new File(strPath); 
            File[] files = dir.listFiles(); 
            
            if (files == null) 
                return; 
            for (int i = 0; i < files.length; i++) { 
                if (files[i].isDirectory()) { 
                    refreshFileList(files[i].getAbsolutePath()); 
                } else { 
                    String strFileName = files[i].getAbsolutePath().toLowerCase();
                    System.out.println("---"+strFileName);
                    filelist.add(files[i].getAbsolutePath());                    
                } 
            } 
        }
    }
      

  4.   


    import java.io.File;   
    class DirList{   
    static void getDir(String strPath){   
        File f = new File(strPath);   
        if (f.isDirectory()){   
            File file[] = f.listFiles();   
            for(int i=0;i<file.length;i++){   
                if (file[i].isDirectory()){   
                    System.out.println("目录\t"+file[i].getPath());   
                    getDir(file[i].getPath());   
                }   
                if(file[i].isFile()){   
                    System.out.println("文件\t"+file[i].getPath());   
                }   
            }   
        }   
           
           
    }   
      
        public static void main(String[] args) {   
               
            String strPath = "E:\\";   
      

  5.   

    这个MFC我会,用的是一个文件查找类,Java应该也有相似的类,你找一下吧
      

  6.   

    package test5;
    import java.io.File;   
    public class DirList{   
    static void getDir(File dir){   
        File[] files=dir.listFiles();
        if(null==files) return;         //有些文件受保护
            for (File file : files) {
                 if (file.isDirectory()){   
                    System.out.println("目录\t"+file.getPath());   
                    getDir(file);   
                }   
                else{   
                    System.out.println("文件\t"+file.getPath());   
                }   
            }   
        }
        public static void main(String[] args) {   
               File dir=new File("E:\\");
      getDir(dir);
        }
    }
    代码已经尽量简洁了