Java读取文件夹下的指定类型的文件(包含子文件夹)

java如何获取文件下某种类型的文件呢,本文通过递归筛选实现此功能,代码如下:

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

/**
 *
 * @author yaohucaizi
 */
public class FileViewer {

    /**
     * 读取文件夹下所以文件
     *
     * @param dirPath
     * @param fileTypes
     * @return
     */
    public static List<String> getAllFilePathByDir_FilterByFileType(String dirPath,
            List<String> fileTypes) {

        String localClassFilePath = FileViewer.class.getResource("/").getPath();
        String contextFilePath = localClassFilePath.substring(1, localClassFilePath.length() - 16);
        contextFilePath = contextFilePath.replace("/", "\\");

        List<String> filePathList = new ArrayList<String>();
        for (int index = 0; index < fileTypes.size(); index++) {
            fileList = new ArrayList<String>();
            List arrayList = FileViewer.getListFiles(dirPath, fileTypes.get(index), true);
            if (arrayList.isEmpty()) {
                System.out.println("没有符号要求的文件");
            } else {
                for (Iterator i = arrayList.iterator(); i.hasNext();) {
                    String temp = (String) i.next();
                    temp = temp.replace(contextFilePath, "");//把根路径去掉  
                    System.out.println(temp);
                    filePathList.add(temp);
                }
            }
        }
        for (int replaceIndex = 0; replaceIndex < filePathList.size(); replaceIndex++) {
            filePathList.set(replaceIndex, filePathList.get(replaceIndex).replace("\\", "/"));
        }
        return filePathList;
    }
    public static List<String> fileList = new ArrayList<String>();

    /**
     * 添加文件后缀名称
     *
     * @return
     */
    public static List<String> suffixlist() {
        List<String> list = new ArrayList<String>();
        list.add("html");
        list.add("htm");
        return list;
    }

    /**
     *
     * @param path 文件路径
     * @param suffix 后缀名
     * @param isdepth 是否遍历子目录
     * @return
     */
    public static List getListFiles(String path, String suffix, boolean isdepth) {
        File file = new File(path);
        return FileViewer.listFile(file, suffix, isdepth);
    }

    public static List listFile(File f, String suffix, boolean isdepth) {
        // 是目录,同时需要遍历子目录  
        if (f.isDirectory() && isdepth == true) {
            File[] t = f.listFiles();
            for (int i = 0; i < t.length; i++) {
                listFile(t[i], suffix, isdepth);
            }
        } else {
            String filePath = f.getAbsolutePath();
            if (suffix != null) {
                int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引  
                String tempsuffix = "";

                if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件  
                {
                    tempsuffix = filePath.substring(begIndex + 1, filePath
                            .length());
                }
                if (tempsuffix.equals(suffix)) {
                    fileList.add(filePath);
                }
            } else {
                // 后缀名为null则为所有文件  
                fileList.add(filePath);
            }
        }
        return fileList;
    }

    public static void main(String[] args) {
        List<String> listResult = getAllFilePathByDir_FilterByFileType("D:\\netbeans workspace\\EDMProject\\trunk\\target\\EDMProject-1.0-SNAPSHOT\\upload\\template/1368683270902", suffixlist());
        System.out.println(listResult.size() + "\t" + listResult.get(0));
    }
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值