天天看点

java 获取指定目录下的所有文件

看代码:

java 获取指定目录下的所有文件

/*** 

     * 获取指定目录下的所有的文件(不包括文件夹),采用了递归 

     *  

     * @param obj 

     * @return 

     */  

    public static arraylist<file> getlistfiles(object obj) {  

        file directory = null;  

        if (obj instanceof file) {  

            directory = (file) obj;  

        } else {  

            directory = new file(obj.tostring());  

        }  

        arraylist<file> files = new arraylist<file>();  

        if (directory.isfile()) {  

            files.add(directory);  

            return files;  

        } else if (directory.isdirectory()) {  

            file[] filearr = directory.listfiles();  

            for (int i = 0; i < filearr.length; i++) {  

                file fileone = filearr[i];  

                files.addall(getlistfiles(fileone));  

            }  

        return files;  

    }  

 说明:上述方法采用了递归,所以包含子目录下的子目录中的文件。。。

测试代码:

java 获取指定目录下的所有文件

@test  

    public  void test_getlistfiles(){  

        arraylist<file> files=fileutils.getlistfiles("d:\\temp\\a\\a");  

        systemutil.printfilesfilepath(files);  

 输出结果:

d:\temp\a\a\divided\merged\oracle学习笔记.doc

d:\temp\a\a\divided\oracle学习笔记.doc_1_3kldv

d:\temp\a\a\divided\oracle学习笔记.doc_2_3kldv

d:\temp\a\a\divided\oracle学习笔记.doc_3_3kldv

d:\temp\a\a\oracle学习笔记.doc

过滤前缀(只是获取指定目录下的文件,没有递归):

java 获取指定目录下的所有文件

     * @param path 

     * @param prefixstr 

     *            :前缀名 

    public static file[] getfilesbypathprefix(file path, final string prefixstr) {  

        file[] filearr = path.listfiles(new filenamefilter() {  

            @override  

            public boolean accept(file dir, string name) {  

                // system.out.println("prefixstr:"+prefixstr);  

                if ((valuewidget.isnullorempty(prefixstr) || (dir.isdirectory() && name  

                        .startswith(prefixstr)))) {  

                    return true;  

                } else {  

                    return false;  

                }  

        });  

        return filearr;  

     * 前缀名 

     * @param pathstr 

    public static file[] getfilesbypathandprefix(string pathstr,  

            final string prefixstr) {  

        file path = new file(pathstr);  

        return getfilesbypathprefix(path, prefixstr);  

过滤后缀名(只是获取指定目录下的文件,没有递归):

java 获取指定目录下的所有文件

     *            :后缀名 

    public static file[] getfilesbypathandsuffix(file path,  

            final string sufixstr) {  

                if ((valuewidget.isnullorempty(sufixstr) || (dir.isdirectory() && name  

                        .endswith(sufixstr)))) {  

     * 后缀名 

     * @param sufixstr 

    public static file[] getfilesbypathandsuffix(string pathstr,  

        return getfilesbypathandsuffix(path, sufixstr);  

    }