JAVA使用递归方法遍历文件夹并获文件下的指定格式文件

JAVA遍历指定文件夹获取指定文件,File类调用方法

该代码是使用File类来关联指定文件和文件夹,输入参数为需要遍历的文件夹。采用递归的方式,来遍历整个文件夹来获取指定文件。比如获得.pdf文件等。
其次就是使用文件输入流和输出流来对文件进行保存。下面给出代码,注意抛异常。

     public static void getfiles(File file1) throws IOException {
    File[] files = file1.listFiles();
    for (File file : files) {
        if (file.isFile()) {//判断是否文文件
            if (file.getName().toLowerCase().endsWith(".pdf")) {//判断文件是否为pdf文件
                System.out.println(file.getName());
                FileInputStream fis = new FileInputStream(file);//关联读入文件
                File dir = new File("D:\\wenJian");//创建保存的路径文件夹,自己可以选择合适的位置
                if (!dir.exists()) {//文件夹不存在就自己创建
                    dir.mkdir();
                }
                FileOutputStream fos = new FileOutputStream(dir + "\\" + file.getName());//保存路径
                byte[] b = new byte[1024];
                int len;
                while ((len = fis.read(b)) != -1) {
                    fos.write(b, 0, len);
                }
                fis.close();
                fos.close();
            }
        } else {
            getfiles(file);//是文件夹就递归遍历
        }
    }
}

JAVA还提供了一个过滤文件类FileFilter类,下面介绍另一种方法

使用FileFilter类,可以在File类创建实例的时候,调用其构造函数。过滤出选择的指定文件。其实File.listFiles方法在调用时,他会调用FileFilter中的抽像方法accept(),可以自己创建类继承FileFilter类,实现accept()方法,定义自己的过滤标准。
在这里,我是用 Lambda表达式写出想要的目标文件。当然,你也可以自己确定需要的的文件。

  public static void getFiles(File file1) throws IOException {
        File[] files = file1.listFiles(pathname -> pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".pdf") ||
                pathname.getName().toLowerCase().endsWith(".md"));///获取.pdf文件和.md文件
        for (File file : files) {
            if (!file.isDirectory()) {//如果时文件,则保存
                FileInputStream fis = new FileInputStream(file);
                File dir = new File("J:\\heima");//创建保存的路径文件夹
                if (!dir.exists()) {//文件夹不存在就自己创建
                    dir.mkdir();
                }
                FileOutputStream fos = new FileOutputStream("J:\\heima\\" + file.getName());//保存路径
                byte[] b = new byte[1024];
                int len;
                while ((len = fis.read(b)) != -1) {
                    fos.write(b, 0, len);
                }
                fis.close();
                fos.close();
                System.out.println(file.getName());
            } else {
                getFiles(file);//递归遍历
            }
        }
    }

你可能感兴趣的:(JAVA学习,JAVA,File类使用方法,获取指定文件下下指定文件)