java I/O之File类:遍历目录树

Java I/O & 序列化:详述Java的I/O流模型,File类用法,以及Java序列化机制 1. Java I/O Java I/O概述:介绍Java I/O体系的基本结构和作用,包括字节流、字符流、缓冲流、对象流、数据流等。 字节流和字符流:对比介绍字节流和字符流的区别,以及它们在不同场景下的应用。 输入/输出流:详细说明如何使用Java I/O流读取和写入数据。 缓冲流:解释使用缓冲流如何提高读写数据的效率。 2. File类 File类概述:介绍Java提供的File类,以及它在文件和目录处理上的主要职责。 创建、删除和检查文件/目录:解释如何使用File类创建、删除文件/目录,以及如何检查 阅读详情

     《Java编程思想》第十八章看到的一个工具类,觉得有些作用,mark一下,主要是对一个指定目录下所有的文件进行遍历,主要代码如下:

public class FileUtils {
	public static File[] local(File dir,final String regex){
		return dir.listFiles(new FilenameFilter(){
			Pattern pattern  = Pattern.compile(regex);
	
			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				return pattern.matcher(name).matches();
			}
			
		});
	}
	
	public static File[] local(String path,String regex){
		return local(new File(path),regex);
	}
	
	public static class TreeInfo{
		private  ArrayList<File> files = new ArrayList<File>();
		private  ArrayList<File> dirs = new ArrayList<File>();
		
		public  void addAll(TreeInfo other){
			files.addAll(other.files);
			dirs.addAll(other.dirs);
		}
		
		public  TreeInfo walk(String startDir,String regex){
			return recurseDirs(new File(startDir),regex);
		}
		
		public TreeInfo walk(File startFile,String regex){
			return recurseDirs(startFile,regex);
		}
		
		public TreeInfo walk(File startFile){
			return recurseDirs(startFile,".*");
		}
		
		public TreeInfo recurseDirs(File filename,String regex){
			TreeInfo results = new TreeInfo();
			File[] filenames = local(filename,regex);
			for(File file:filenames){
				if(file.isDirectory()){
					results.dirs.add(file);
					addAll(recurseDirs(file,regex));
				}else{
					results.files.add(file);
				}
			}
			return results;
		}
	}
	
	public static void main(String[] args) {
		File file = new File("D:\\maven\\helloworld");
		System.out.println("|--"+file.getName());
		TreeInfo fileTree = new TreeInfo();
		TreeInfo tree = fileTree.walk(file);
		ptintTree(tree,1);
	}

	private static void ptintTree(TreeInfo tree,int level) {
		String prefix = "";
		for(int i = 0;i < level;i++){
			prefix += "  ";
		}
		prefix += "|--";
		for(File f:tree.dirs){
			System.out.println(prefix+f.getName());
			ptintTree(new TreeInfo().walk(f),level + 1);
		}
		for(File f:tree.files){
			System.out.println(prefix+f.getName());
		}
	}
}

用本地的一个maven工程测试输出结果如下:

|--helloworld
  |--src
    |--main
      |--java
        |--easymorse
          |--com
            |--App.java
    |--test
      |--java
        |--easymorse
          |--com
            |--AppTest.java
  |--target
    |--classes
      |--easymorse
        |--com
          |--App.class
    |--maven-archiver
    |--test-classes
      |--easymorse
        |--com
          |--AppTest.class
    |--helloworld-1.0-SNAPSHOT.jar
  |--.classpath
  |--.project
  |--pom.xml

Java文件操作实战:从File类到对象序列化的核心要点与避坑指南 在Java编程中,I/O(输入/输出)操作是连接内存数据与持久化存储的关键桥梁,其核心原理在于将程序中的对象或数据转换为字节流进行读写。文件操作作为I/O体系的基础,不仅实现了数据的持久化,更在数据处理、系统交互等场景中具有重要技术价值。Java早期通过java.io.File类抽象化文件和目录路径,专注于文件元数据操作,如检查存在性、获取属性、创建删除等,为后续的流操作奠定基础。在实际工程实践中,文件操作常涉及目录遍历、文件筛选、异常处理等典型场景,而对象序列化则进一步将面向对象与文件I/O结合,通过Se 阅读详情

相关推荐

遍历文件夹自动生成目录树

遍历文件夹自动生成目录树 遍历文件夹自动生成目录树

Java获取文件的行数

Java获取文件的行数 原文地址 利用LineNumberReader public static int getFileLineNum(String filePath) { try (LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(filePath))){ lineNumb...

superbeyone 1万+

java遍历文件树形结构输出

用java实现遍历文件夹中文件并且以树形结构输出

【Java】Files工具类 遍历文件夹中的文件

使用Files提供的遍历文件夹方法

鹏啊鹏 789

java遍历文件目录生成树结构txt文件

将Dir.class放在任意需要遍历的文件目录,直接命令窗口运行java Dir生成Dir.txt文件

Java遍历输出指定目录、树形结构所有文件包括子目录下的文件

主要介绍了Java遍历输出指定目录、树形结构下的所有文件包括子目录中的文件,需要的朋友可以参考下

java 遍历目录 树 递归 控制深度 层数

java 遍历目录 树 递归 控制深度 层数

global_coding的博客 1522

IPMI的SOL (Serial Over LAN) 和 UART

UART全名是Universal Asynchronous Receiver/Transmitter(通用異步接收/发送器),它是一个常用的異步串行传输协议。透过UART传输前,接收方须要先知道传输方的鲍率(Baud rate):单位时间内,讯号状态变化的次数。例如 115200 bps,表示每秒会传送115200个bits--> 因此读取率就是 1/115200=8.6微秒读取一次讯号。封包内的资料长度:通常是 8bits。

yeiris的博客 1万+

Java中树的遍历

在编程语言数据结构中,树是非常重要且应用较为频繁的一种,此文章主要讲述了在Java中,对二叉树进行遍历。树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树。...

今天没有努力 4598

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 596

科普:Frenet坐标

理想情况下,描述这种常见驾驶行为在数学上应该很容易。一种方法是使用新的坐标系。现在,而不是放下一个正常的笛卡尔网格,我们做一些事情,就像你看到下面…Frenet Coordinates是一种以比传统x,y笛卡尔坐标更直观的方式表示道路位置的方式。如果我们想要方程式来描述这个动作,那就不容易了!想象一下像下面这样一条弯曲的道路,笛卡尔坐标系就位于它的上面…使用这些笛卡尔坐标,我们可以尝试描述车辆通常在路上行驶的路径…那么在Frenet坐标系下呈现的典型轨迹是什么样的?在这里,我们定义了一个新的坐标系统。

OceanStar的博客 1万+

java递归遍历目录树(上下层级关系)

@EntityScan @Data @Builder public class DepartmentList { private Integer id; private String name; private java.util.List<DepartmentList> child; } /** * @author gmy * @version 1.0 * @date 2021/7/23 15:15 */ @Service @AllArgsCons...

小高同学要努力吖 2636

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1158

JAVA I/O

一.File类 1.目录列表器 示例代码1 public class DirList { public static void main(String[] args) { File path = new File("D:\\Work"); String[] list; list = path.list(new DirFilter("^.*\\.rar")); Arrays.sor...

qq_24516549的博客 147

广东省道路工程检测练习试题(单选题)真题

1.一般项目的合格点率应达到( ),且不合格点的最大偏差值不得大于规定允许偏差值的1.5倍。A.不低于75%B.不低于80%C.不低于85%D.不低于90%答案:B2.进行土路基平整度检测时,当路宽小于9m,检测点数应为( )A.1B.2C.3D.4答案:A3.根据《城镇道路工程施工与质量验收规范》,在分部工程中,根据工种、材料、施工工艺等划分的是( )A.单位工程B.分项工程C.分部工程D.工序工程答案:B4.根据《城镇道路工程施工与质量验收规范》,土方路基压实度的检测频率为每1000m每压实层抽检( )

ZShy001238的博客 685

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 555

JavaSE-10-I/O流

I/O流 1:Path和Paths类 Path 用于来表示文件路径和文件,用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件读写权限等。 1.1:创建Path对象 1.1.1:通过Paths类来创建Path对象 Path path = Paths.get("C:\\Users\\86156\\Desktop\\test.txt"); Path path1 = Paths.get("C:\\Users\\86156\\Desktop","test.txt"); 1.1.2:通过 .

苍煜 873

第38节:cesium 风场效果(含源码+视频)

cesium 风场效果

qq_29384639的博客 2331

Java IO详解:File、FileInputStream与FileOutputStream

Java文件IO操作的核心类包括File、FileInputStream和FileOutputStream,它们构成了文件处理的基础。File类用于管理文件路径和元数据操作,但不涉及内容读写。FileInputStream和FileOutputStream分别实现字节流的读取和写入功能,支持原始字节数据的文件操作。文章详细解析了这些类的构造方法、核心API及使用场景,并对比了字节流与字符流的差异。最佳实践建议使用缓冲流提升性能,同时强调了资源关闭和异常处理的重要性。全文从源码层面剖析设计原理,为开发者掌握J

百锦再的博客 1480

GEE:哨兵时间序列遥感数据和动态阈值方法计算物候时期EOS/SOS(2)

本文将分享和解释论文《Improved Estimates of Arctic Land Surface Phenology Using Sentinel-2 Time Series》中使用到的基于阈值估算北极地区的植被物候,特别是北极地区的植被季节开始和结束的日期(SoS和EoS)的方法和代码。该方法使用的是使用哨兵2数据,并实现了两种阈值方法( 无平滑的阈值方法、平滑后的阈值方法)。

养乐多的博客 2972

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

说说 Java I/O 系统之 File 类

File 类一个特定文件的名称,又表示一个目录下的一组文件的名称。如果它表示的是文件集,那么可以调用 list() 方法,它会返回一个字符数组。所以这个类叫做 FilePath 会更贴切些。1 目录列表工具调用不带参数的 list() 方法,可以获得全部的文件列表。如果只想获得扩展名为 .java 的文件,就要使用目录过滤功能。下面这段代码对 list 按字母顺序进行了排序:public class

读万卷书,行万里路 634

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java8的NIO新文件I/O到底有多好用?

文章目录文件和目录路径选取路径部分片段路径分析**Paths**的增减修改目录文件系统路径监听文件查找文件读写本章小结 在丑陋的 Java I/O 编程方式诞生多年以后,Java终于简化了文件读写的基本操作。 打开并读取文件对于大多数编程语言来是非常常用的,由于 I/O 糟糕的设计以至于很少有人能够在不依赖其他参考代码的情况下完成打开文件的操作。 在 Java7 中对此引入了巨大的改进。这些新元素被放在 java.nio.file 包下面,过去人们通常把 nio 中的 n 理解为 new 即新的 io,

JavaEdge全是干货的技术号 1819

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

linux中递归查看目录树,java采用File类,递归打印出目录树,类似linux 中 tree命令效果...

只是简单的实现了一个递归打开目录树,还需要后续进行完善。效果如下:代码如下:package com.lampnick.archiver;import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.Arrays;import org.junit.Test;pub...

weixin_31690347的博客 370

Java 基础知识(11)-File类,枚举,异常

文章目录1 File类及其用法2 用递归遍历目录结构和树状展开3 枚举4 异常 1 File类及其用法 java.io.File类:代表文件和目录,在开发中,读取文件,生成文件,删除文件,修改文件的属性时经常会用到本类 File类的常用构造方法: public File(String pathname) 以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.id中存储 使用mkdir和mkdirs创建目录树: File f3 = new File("

weixin_43541094的博客 346

JavaIO文件操作源码深度解读:File类与Path接口的设计哲学与演进

Java 并发编程中的伪共享(False Sharing) @Contended 注解应用

sqZYjXiAk的博客 444

I/O流的类和创建对象的方式

Path类和Paths类 Path用来表示文件路径和目录路径,用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,文件读写权限等。 创建Path对象 通过Paths类创建Path对象 Paths类用于通过一个路径字符串来构造Path对象。 ...

JIAFury的博客 541
上一篇: 利用线程池来创建和管理线程
下一篇: 全面解析ThreadLocal类
coder_no
博客等级 码龄9年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值