[javaSE] IO流(递归查找指定文件)
2023-02-18 15:47:15 时间
递归方法,实现查找目录中以.java为后缀的文件路径,并存入文本文件中
定义一个静态方法fileToLine(),传入参数:File对象目录,List集合对象(List<File> 这样做的目的是因为这个方法会被递归,因此不能在内部创建,并且List集合是引用传递)
调用File对象的listFiles()方法,获取目录数组File[] files
循环这个数组for(File file : files),循环中
判断是否是目录file.isDirectory为真,进行递归fileToLine(file,list)
不是目录,判断后缀为”.java”文件,加入List集合
数据的持久化
定义一个函数writeToFile(),传递参数:List<File> 集合,String的文件名
定义一个BufferedWriter对象,new出来,构造参数:FileWriter对象,
for循环List<File>集合,循环中
调用File对象的getAbsolutePath()方法,得到String的文件绝对路径
调用BufferedWriter对象的write()方法,写入缓存,参数:String路径
调用BufferedWriter对象的newLine()方法,写入一个换行
调用BufferedWriter对象的flush()方法,刷新缓存
注意异常的捕获,关闭缓存
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.List; public class IOTest { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File dir = new File("E:/"); List<File> result = new ArrayList<File>(); fileToLine(dir, result); //System.out.println(result); writeToFile(result,"E:/log.txt"); } /** * 递归查找文件 * * @param dir * @param result */ public static void fileToLine(File dir, List<File> result) { File[] files = dir.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { // 递归目录 fileToLine(file, result); } else { // 判断后缀,这里可以加入其他判断 if (file.getName().endsWith(".java")) { result.add(file); } } } } } /** * 持久化数据 * @param files * @param logName * @throws Exception */ public static void writeToFile(List<File> files,String logName) throws Exception{ BufferedWriter bw=new BufferedWriter(new FileWriter(logName)); for(File file:files){ String filePath=file.getAbsolutePath(); bw.write(filePath); bw.newLine(); bw.flush(); } bw.close(); } }
加入行号,2万6000行数据,几秒的时间就能找到
相关文章
- inner join 与 left join 之间的区别
- Ableton Live 11 Suite for Mac(音乐制作软件) v11.2.7/v10.1.43中文版
- 大数据必学Java基础(九十五):预编译语句对象
- 佛萨奇DAPP开发丨佛萨奇2.0系统开发详情丨佛萨奇2.0智能合约系统开发原理及源码
- CentOS7+Apache使用SSL配置HTTPS 服务
- 浅谈佛萨奇2.0波场链/币安链/马蹄链智能合约系统开发技术详细及源码部署
- 域名更换后如何将旧的网站权重转移到新的网站(301重定向)
- freemarker里取map的key和value(ftl中怎么获取map的key和value)
- JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK15特性讲解】
- mybatis批量update的时候失败,解决办法
- UE报“应用程序无法正常启动(0xc0000022)”
- 大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理
- 佛萨奇2.0系统丨佛萨奇2.0智能合约系统开发上线版丨佛萨奇2.0开发现成源码功能
- 留给扎克伯格的时间不多了
- Invalid byte tag in constant pool: 19
- JuiceFS CSI Driver 常见问题排查指南
- 大数据必学Java基础(九十七):事务及回滚点
- 佛萨奇开发丨佛萨奇系统开发(2.0运营版)丨佛萨奇系统源码案例
- 2022 JuiceFS 社区用户调研结果出炉
- MetaForce佛萨奇开发案例,MetaForce佛萨奇2.0智能合约系统开发流程及源码