递归遍历文件夹中的文件

package util;

import java.io.File;
import java.util.ArrayList;

import entity.FileOfDown;

public class FileUtil {
    public static ArrayList<File> getFiles(String absolutePath){
        return new FileList(absolutePath).fileList ;
    }
    /**
     * 
     * 功能: 实现遍历指定绝对路径下的所有文件
     * 设计原因: 如果单一使用一个方法,则需要在方法递归的时候传递最终存放文件数组的对象。
     * 使用一个类则可以将最终存放结果的数组设置为属性,这样递归方法无论递归多深都可以访问属性。
     *
     */
    private static class FileList {
        public ArrayList<File> fileList = new ArrayList<File>() ;
        public FileList(String absolutePath ){
            getFiles(absolutePath) ;
        }
        private void getFiles(String absolutePath ){
            File file = new File(absolutePath) ;
            if(!file.exists()){
                return ;
            }
            if(file.isDirectory()){
                // {@code null} if this abstract pathname does not denote a directory, 
                //or if an I/O error occurs.
                File[] files = file.listFiles() ;
                if(files == null || files.length == 0 ){
                    return ;
                }
                for(File fileItem : files ){
                    if(fileItem.isDirectory()){
                        getFiles(fileItem.getAbsolutePath()) ;
                    }else{
                        
                        fileList.add(fileItem) ;
                    }
                }
            }else{
                fileList.add(file) ;
            }
        }
    }
}

 

posted @ 2015-08-15 11:46  Birding  阅读(463)  评论(0编辑  收藏  举报