IO获取指定目录及其目录下子目录
Posted lcj122
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO获取指定目录及其目录下子目录相关的知识,希望对你有一定的参考价值。
一、需求:获取指定目录下,指定扩展名的文件(包含子目录中的)
二、需要用到的方法
1、FilenameFilter :返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。
filter.accept : 对遍历到的文件进行过滤器的过滤,将符合对象的File文件
package keyboad; import java.io.*; import java.util.ArrayList; import java.util.List; /** * 需求: * 获取指定目录下,指定扩展名的文件(包含子目录中的) * 这些文件的绝对路径写入到一个文本文件中 * * means:建立一个指定的扩展名的文件列表 *思路: * 1、深度遍历 * 2、需要在遍历过程总进行过滤,将符合条件的内容储存到容器中 * 3、对容器中的内容进行遍历并将绝对路径写入到文件中 * * Created by lcj on 2017/11/10. */ public class practiseDemo { public static void main(String[] args) { //指定一个文件目录 File dir = new File("D:\\Repository"); //过滤器,过滤后缀名为.jar FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".jar"); } }; List<File> list = new ArrayList<File>(); //执行getFiles方法,执行完将数据储存至list中 getFiles(dir , filter , list); //将过滤完的文件保存至java.txt文件中 File destFile = new File(dir,"java.txt"); //执行wrinte2File方法 wrinte2File(list,destFile); } /** *对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤 * 将过滤器后的内容存储到指定容器List中 * @param dir * @param filter * @param list */ //文件路径,FilenameFilter 过滤器文件名,将过滤掉的数据存储数组 public static void getFiles(File dir,FilenameFilter filter,List<File> list ) { //listFiles 方法:返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。 File[] files = dir.listFiles(); for (File file : files)///file 变量 { if (file.isDirectory()) { //如果File是目录,将进行递归 getFiles(file,filter,list); }else { //对遍历到的文件进行过滤器的过滤,将符合对象的File文件,存储至List集合中 if (filter.accept(dir,file.getName())) { list.add(file); } } } } //什么文件写入到 写到那个文件(目的文件) public static void wrinte2File(List<File> list,File destFile) //List<File> 字符流 { BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(destFile)); for (File file :list) { bufw.write(file.getAbsolutePath()); bufw.newLine(); bufw.flush(); } }catch (Exception e) { throw new RuntimeException("关闭失败"); } finally { if (bufw !=null) { try { bufw.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("关闭失败"); } } } } }
以上是关于IO获取指定目录及其目录下子目录的主要内容,如果未能解决你的问题,请参考以下文章