风君雪科技博客

  • 首页
  • 业界
  • 前端
  • 运维
  • 建站
  • 软件
  • 生活
  • 后端
  • 创投
  • 运营
  • 程序人生
    • 影视
    • 游戏
    • 句子
    • 资源
  • 其他
    • 说说
  • 关于本站
  1. 首页
  2. 软件
  3. 正文

Java遍历文件夹的两种方法(非递归和递归)

2023年9月19日 12点热度 0人点赞 0条评论

import java.io.File;
import java.util.LinkedList;
public class FileSystem {
 
 public static int num;
 
    public static void main(String[] args) {
       
        long a = System.currentTimeMillis();
        //String path="c:";
        num=0;
        String[] lists={"c:","d:"};
        /*
        for(int i=0;i<lists.length;i++){
         File file=new File(lists[i]);
         scanDirRecursion(file);
        */
        for(int i=0;i<lists.length;i++){
            scanDirNoRecursion(lists[i]);
        }
       
        System.out.print("文件总数:"+num);
        System.out.print("总耗时:");
        System.out.println(System.currentTimeMillis() - a);
    }
   

    //非递归
    public static void scanDirNoRecursion(String path){
     LinkedList list = new LinkedList();
        File dir = new File(path);
        File file[] = dir.listFiles();
        for (int i = 0; i < file.length; i++) {
            if (file[i].isDirectory())
                list.add(file[i]);
            else{
                System.out.println(file[i].getAbsolutePath());
                num++;
            }
        }
        File tmp;
        while (!list.isEmpty()) {
            tmp = (File)list.removeFirst();//首个目录
            if (tmp.isDirectory()) {
                file = tmp.listFiles(); 
                if (file == null)
                    continue;
                for (int i = 0; i < file.length; i++) {
                    if (file[i].isDirectory())
                        list.add(file[i]);//目录则加入目录列表,关键
                    else{
                        System.out.println(file[i]);
                        num++;
                    }
                }
            } else {
                System.out.println(tmp);
                num++;
            }
        }
    }

 //递归  
 public static void scanDirRecursion(File file) {
   try {
    if (file.canRead()) {
     if (file.isDirectory()) {
      String[] files = file.list();
      if (files != null) {
       for (int i = 0; i < files.length; i++) {
        scanDirRecursion(new File(file, files[i]));
       }
      }
     } else {
      //if (file.getName().endsWith("ppt"))
       System.out.println(file);
       num++;
     }
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
 }
}
测试:

(1)递归: 文件总数:189497  总耗时:39328

(2)非递归:文件总数:189432 总耗时:37469

非递归相对要好

标签: Java遍历文件夹的两种方法(非递归和递归)
最后更新:2023年9月19日

风君子

独自遨游何稽首 揭天掀地慰生平

点赞
< 上一篇
下一篇 >

猜你喜欢

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

风君子

独自遨游何稽首 揭天掀地慰生平

最新 热点 随机
最新 热点 随机
LG 新款 27GR82Q 显示器预售:2K 180Hz 98% DCI-P3 色域,2199 元 迎广推出新款 DUBILI 机箱,售价 1699 元起 树莓派 5 超频测试:CPU 从 2.4GHz 到 3.0GHz、GPU 从 800MHz 到 1.1GHz,性能提升 25% 《碟中谍 7:致命清算(上)》今日网播上线 OnePlus Buds 3黑色渲染图曝光 将支持48dB主动降噪 超级Mate馆国庆19省24城路演开启 北京王府井朝阳大悦城同步启动 到底什么是 LPO? 汽车行业的DMS系统 IT不变应万变 加班画了一晚上的图忘记保存怎么办? 很多朋友认为Pr剪辑视频很难,其实掌握这几点,你也可以轻松上手
常用的四种电脑截图方法如何使用电脑截图Win7密码破解大法如何破译电脑密码消息称英特尔 14 代酷睿 i9 / i7 / i5 桌面处理器 10 月 17 日发布,首发 K 系列和 KF 系列如何绑定电脑和路由器如何绑定路由器管理器梅干菜能用热水泡吗 梅干菜发霉了还能吃吗查全国有多少个重名的(重名查询包括自己吗)RX6800和RTX4060Ti哪款好 RX6800和RTX4060Ti对比评测中国空调排名(中国空调排名前十名)怎么用手机远程控制电脑手机如何远程操控电脑非参数估计——核密度估计(Parzen窗)
实战告诉你如何给旧电脑升级电脑如何更新 谁说国产车从不召回!制动系统存隐患:奇瑞召回八千多辆小蚂蚁电动车 李想列出五位值得学习的企业家:包括任正非和马斯克 动物园大亨:疯狂水世界秘籍-Zoo Tycoon:Marine Mania秘籍 银行个人住房抵押贷款额度的公式 利率和费率 jmeter(四)HTTP请求 word中查找的快捷键是哪个 iPhone SE Plus曝光:6.1寸挖孔屏、配屏下指纹 千元性能之王!摩托罗拉edge S30京东评论数破2万:用户担心的发热没出现
标签聚合
信用 办公软件教程 理财知识 游戏 中国 华为 小米 支付宝 汽车 苹果 iphone APP 路由器 手机 科技 芯片 秘籍 教程 借款人 股票 智能手机 AMD 程序 额度 银行卡 来了 马斯克 腾讯 特斯拉 信用卡 业界 利息 利率 处理器 银行 微软 荣耀 显卡 快科技 三星 电动车 京东 IT资讯 身份证 投资者 贷款 美国 股价 比亚迪 投资理财

COPYRIGHT © 2023 风君雪博客园. ALL RIGHTS RESERVED.

粤ICP备2022155369号