架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 191|回复: 0

[资料] Java 文件遍历

[复制链接]
跳转到指定楼层
楼主
发表于 2019-6-28 15:18:09
zu
源码:

  1. /**
  2. * 遍历文件夹工具类
  3. * @author itsvse
  4. */
  5. public class DirTraversal {
  6.    
  7.     /**
  8.      * 不进行递归,遍历当前路径下的文件
  9.      * @param strPath 路径
  10.      * @return 文件夹列表
  11.      */
  12.     public static LinkedList<File> noRecFiles(String strPath) {
  13.         // 创建文件夹列表
  14.         LinkedList<File> list = new LinkedList<>();
  15.         // 创建文件列表
  16.         LinkedList<File> fileList = new LinkedList<>();
  17.         // 创建文件
  18.         File dir = new File(strPath);
  19.         // 获取当前路径下的所有文件
  20.         File[] files = dir.listFiles();
  21.         // 对文件进行循环
  22.         for (int i = 0, size = files.length; i < size; i++) {
  23.             // 判断是否为文件夹
  24.             if (files[i].isDirectory()) {
  25.                 // 添加到文件夹列表
  26.                 list.add(files[i]);
  27.             } else {
  28.                 // 添加到文件列表
  29.                 fileList.add(files[i]);
  30. //              System.out.println(files[i].getAbsolutePath());
  31.             }
  32.         }
  33.         // 创建一个临时文件
  34.         File tmp;
  35.         // 判断文件夹列表是否为空
  36.         while (!list.isEmpty()) {
  37.             // 从列表中移除第一个文件夹,并赋值为临时文件
  38.             tmp = list.removeFirst();
  39.             // 判断临时文件是否是文件夹
  40.             if (tmp.isDirectory()) {
  41.                 // 获取文件夹下的文件
  42.                 files = tmp.listFiles();
  43.                 // 如果文件为空,则跳出本次循环
  44.                 if (null == files) {
  45.                     continue;
  46.                 }
  47.                 // 循环当前文件
  48.                 for (int i = 0, size = files.length; i < size; i++) {
  49.                     // 判断是否为文件夹
  50.                     if (files[i].isDirectory()) {
  51.                         // 添加到文件夹列表
  52.                         list.add(files[i]);
  53.                     } else {
  54.                         // 添加到文件列表
  55.                         fileList.add(files[i]);
  56. //                      System.out.println(files[i].getAbsolutePath());
  57.                     }
  58.                 }
  59.             } else {
  60. //              System.out.println(tmp.getAbsolutePath());
  61.             }
  62.         }
  63.         return fileList;
  64.     }
  65.    
  66.     /**
  67.      * 递归调用数组列表
  68.      * @param strPath 路径
  69.      * @return 文件列表
  70.      */
  71.     public static ArrayList<File> listFiles(String strPath) {
  72.         return refreshFileList(strPath);
  73.     }

  74.     /**
  75.      * 获取当前路径文件列表
  76.      * @param strPath 当前路径
  77.      * @return 文件列表
  78.      */
  79.     private static ArrayList<File> refreshFileList(String strPath) {
  80.         // 存储文件列表
  81.         ArrayList<File> fileList = new ArrayList<>();
  82.         // 创建文件
  83.         File dir = new File(strPath);
  84.         // 获取当前路径下的所有文件
  85.         File[] files = dir.listFiles();
  86.         // 判断文件数组是否为空
  87.         if (null == files) {
  88.             return null;
  89.         }
  90.         // 循环遍历所有文件
  91.         for (int i = 0, size = files.length; i < size; i++) {
  92.             // 如果是文件夹
  93.             if (files[i].isDirectory()) {
  94.                 // 遍历此路径,执行此方法
  95.                 ArrayList<File> refreshFileList = refreshFileList(files[i].getAbsolutePath());
  96.                 if (null != refreshFileList) {
  97.                     fileList.addAll(refreshFileList);   
  98.                 }
  99.             } else {
  100.                 // 添加到文件列表
  101.                 fileList.add(files[i]);
  102.             }
  103.         }
  104.         return fileList;
  105.     }
  106.    
  107.    
  108.    
  109. }
复制代码


使用:

  1. public class Test {
  2.     public static void main(String[] args) throws IOException {
  3. //      LinkedList<File> noRecFiles = DirTraversal.noRecFiles("E:\\web");
  4. //      for (File file : noRecFiles) {
  5. //          System.out.println(file.getAbsolutePath());
  6. //      }
  7.         
  8.         ArrayList<File> listFiles = DirTraversal.listFiles("E:\\web");
  9.         for (File file : listFiles) {
  10.             System.out.println(file.getAbsolutePath());
  11.         }      
  12.     }
  13. }
复制代码






上一篇:XML的使用
下一篇:Java工具类StringUtils中isEmpty、isBlank、isNotEmpty、isNotBlank方法
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-9-17 18:26

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表