一、需求:获取指定目录下,指定扩展名的文件(包含子目录中的)

  二、需要用到的方法

    1、FilenameFilter :返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。

       filter.accept : 对遍历到的文件进行过滤器的过滤,将符合对象的File文件   

  1. package keyboad;
  2.  
  3. import java.io.*;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. /**
  8. * 需求:
  9. * 获取指定目录下,指定扩展名的文件(包含子目录中的)
  10. * 这些文件的绝对路径写入到一个文本文件中
  11. *
  12. * means:建立一个指定的扩展名的文件列表
  13. *思路:
  14. * 1、深度遍历
  15. * 2、需要在遍历过程总进行过滤,将符合条件的内容储存到容器中
  16. * 3、对容器中的内容进行遍历并将绝对路径写入到文件中
  17. *
  18. * Created by lcj on 2017/11/10.
  19. */
  20. public class practiseDemo {
  21. public static void main(String[] args) {
  22. //指定一个文件目录
  23. File dir = new File("D:\\Repository");
  24. //过滤器,过滤后缀名为.jar
  25. FilenameFilter filter = new FilenameFilter() {
  26. @Override
  27. public boolean accept(File dir, String name) {
  28. return name.endsWith(".jar");
  29. }
  30. };
  31. List<File> list = new ArrayList<File>();
  32. //执行getFiles方法,执行完将数据储存至list中
  33. getFiles(dir , filter , list);
  34. //将过滤完的文件保存至java.txt文件中
  35. File destFile = new File(dir,"java.txt");
  36. //执行wrinte2File方法
  37. wrinte2File(list,destFile);
  38. }
  39.  
  40. /**
  41. *对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤
  42. * 将过滤器后的内容存储到指定容器List中
  43. * @param dir
  44. * @param filter
  45. * @param list
  46. */
  47. //文件路径,FilenameFilter 过滤器文件名,将过滤掉的数据存储数组
  48. public static void getFiles(File dir,FilenameFilter filter,List<File> list ) {
  49. //listFiles 方法:返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。
  50. File[] files = dir.listFiles();
  51. for (File file : files)///file 变量
  52. {
  53. if (file.isDirectory())
  54. {
  55. //如果File是目录,将进行递归
  56. getFiles(file,filter,list);
  57. }else {
  58. //对遍历到的文件进行过滤器的过滤,将符合对象的File文件,存储至List集合中
  59. if (filter.accept(dir,file.getName()))
  60. {
  61. list.add(file);
  62. }
  63. }
  64. }
  65. }
  66. //什么文件写入到 写到那个文件(目的文件)
  67. public static void wrinte2File(List<File> list,File destFile) //List<File> 字符流
  68. {
  69.  
  70. BufferedWriter bufw = null;
  71. try {
  72. bufw = new BufferedWriter(new FileWriter(destFile));
  73. for (File file :list)
  74. {
  75. bufw.write(file.getAbsolutePath());
  76. bufw.newLine();
  77. bufw.flush();
  78. }
  79. }catch (Exception e)
  80. {
  81. throw new RuntimeException("关闭失败");
  82. }
  83. finally {
  84. if (bufw !=null)
  85. {
  86. try {
  87. bufw.close();
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. throw new RuntimeException("关闭失败");
  91. }
  92. }
  93. }
  94. }
  95. }

IO获取指定目录及其目录下子目录的更多相关文章

  1. IO流-获取指定目录下文件夹和文件对象【File类】

    一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取 ...

  2. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  3. c# 获取指定目录下的所有文件并显示在网页上

    参考文献: FileInfo 的使用  https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...

  4. 2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到F盘下任意目录

    package cn.it.text; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  5. C++:获取指定目录下的所有文件

    1.获得指定目录下的所有文件(不搜索子文件夹) 需要包含的头文件 #include <io.h> #include <string> #include <vector&g ...

  6. C#中获取指定目录下所有目录的名称、全路径和创建日期

    场景 指定一个路径,根据这个父级路径获取此目录下所有目录的名称.全路径.创建日期等信息. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众 ...

  7. <UnityTheGreat><001>获取指定目录下指定类型的所有文件的名称

    #region Environment Windows 10 Unity 2019.4.16f1c1 LTS VSCode 1.52 https://github.com/MirzkisD1Ex0/U ...

  8. File常用的方法操作、在磁盘上创建File、获取指定目录下的所有文件、File文件的重命名、将数据写入File文件

    文章目录 1.基本介绍 2.构造方法 3.常用的方法 4.代码实例 4.1 创建文件和目录(目录不存在) 4.1.1 代码 4.1.2 测试结果 4.2 测试目录存在的情况.直接写绝对的路径名 4.2 ...

  9. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

随机推荐

  1. HNOI2006 潘多拉的盒子

    题目描述 题解: 题目的描述比较长,理解起来也有一定难度.仔细读题后我们发现整个任务可以分成两个部分:找出咒语机之间所有的升级关系.求最长升级序列. 1. 求升级关系: 容易看出,咒语机i可以抽象成一 ...

  2. <Spring Cloud>入门五 hystrix

    1.服务熔断 1.1引入坐标 <dependency> <groupId>org.springframework.cloud</groupId> <artif ...

  3. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  4. 关于一个多个.cpp文件的项目中,函数出现未定义引用错误

    编译的话,必须把全部的c文件都要编译的啊,只编译一个c算怎么个逻辑呢?编译实际上是2个过程,编译和链接.编译过程只检查所有的符号(变量,函数)有没有声明,即只需要h文件生命就够了.但是链接时候,需要找 ...

  5. python基础——1(简介与变量)

    目录 一.编程语言介绍 1.1.机器语言: 1.2.汇编语言: 1.3.高级语言: 二.安装python解释器 2.1.验证python解释器的安装 2.2.设置环境变量 三.执行python程序的两 ...

  6. nginx启动、重启、关闭、升级

    一.启动 cd usr/local/nginx/sbin ./nginx 二.重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径 或者使用 cd /usr/local/ngin ...

  7. Shell脚本问题详解

    例1:找出当前系统中端口大于1024的程序! 使用netstat -tuln查询出的结果如下,需要输出红色字体的行: [root@localhost ~]# netstat -tuln Active ...

  8. 基于 WPF + Modern UI 的 公司OA小助手 开发总结

    前言: 距离上一篇博客,整整一个月的时间了.人不能懒下来,必须有个阶段性的总结,算是对我这个阶段的一个反思.人只有在总结的过程中才会发现自己的不足. 公司每天都要在OA系统上上班点击签到,下班点击签退 ...

  9. loadrunner使用随机值

    用户登录设置:系统用1000000001.1000000002等可以登录系统,这个代表登录的用户名

  10. gitHub网站上常见英语翻译

    为开发者而建Built for developers GitHub is a development platform inspired by the way you work.GitHub是一个受你 ...