File类的使用——遍历所有文件及子文件以及遍历删除
发布日期:2021-07-27 04:56:53
浏览次数:4
分类:技术文章
本文共 2689 字,大约阅读时间需要 8 分钟。
遍历所有文件和子文件
通过文件流遍历,核心就是【递归】,递归的基线就是文件层级,如果是文件夹层级,则调用自己,进行递归。
这里在格式上还进行了约束,要求按照如下格式进行输出打印,以方便阅读。
|D:\Java\practice|__D:\Java\practice\.metadata|____D:\Java\practice\.metadata\.lock|____D:\Java\practice\.metadata\.log
这里将遍历封装了函数,然后将格式打印封装为另一个函数,在遍历方法内部调用了private类修饰的格式打印函数。
/***遍历文件和文件夹*@param dir File类对象*@param level int类型,表示当前File的文件夹级别,用于调用getSeparatro()方法,以确定格式打印*/public static void listDir(File dir, int level) { System.out.println(getSeparatro(level) + dir.toString()); //父目录打印,标识作用,可以删除 File[] files = dir.listFiles(); level++; //递归,每次会【溯回】操作,对应文件夹的等级会被记录 if (null != files && 0 < files.length) { for (File file : files) { //判断是否为文件夹,如果是,则递归,直到基线为文件为止 if (file.isDirectory()) { listDir(file, level); } else { System.out.println(getSeparatro(level) + file); } } }}/*** 判断生成多少分隔符* @param level 0表示没有分隔符* @return String类型,返回目录前面的标识符*/private static String getSeparatro(int level) { StringBuilder sb = new StringBuilder(); sb.append("|"); for (int i = 0; i < level; i++) { sb.append("__"); } return sb.toString();}//打印结果|D:\Java\practice|__D:\Java\practice\.metadata|____D:\Java\practice\.metadata\.lock|____D:\Java\practice\.metadata\.log|____D:\Java\practice\.metadata\.mylyn|______D:\Java\practice\.metadata\.mylyn\.taskListIndex|________D:\Java\practice\.metadata\.mylyn\.taskListIndex\segments_1|________D:\Java\practice\.metadata\.mylyn\.taskListIndex\write.lock|______D:\Java\practice\.metadata\.mylyn\.tasks.xml.zip|______D:\Java\practice\.metadata\.mylyn\contexts|______D:\Java\practice\.metadata\.mylyn\repositories.xml.zip|______D:\Java\practice\.metadata\.mylyn\tasks.xml.zip|____D:\Java\practice\.metadata\.plugins|______D:\Java\practice\.metadata\.plugins\org.eclipse.buildship.core|______D:\Java\practice\.metadata\.plugins\org.eclipse.core.resources|________D:\Java\practice\.metadata\.plugins\org.eclipse.core.resources\.history|__________D:\Java\practice\.metadata\.plugins\org.eclipse.core.resources\.history\0|____________D:\Java\practice\.metadata\.plugins\org.eclipse.core.resources\.history\0\30b7de5
遍历删除所有文件及子文件
电脑上的软件的卸载,本质都是遍历删除,由于程序只能将空文件夹删除,所以必须依据从内到外,由底层到顶层的顺序去一层层的遍历删除。
public static void deleteFile(File dir) { File[] files = dir.listFiles(); if (files != null && files.length > 0) { for (File file : files) { //判断是否为文件夹,如果是,则递归,直到到达基线(文件层级)为止,然后溯回 if (file.isDirectory()) { deleteFile(file); } else { System.out.println(file.toString() + ":" + file.delete()); } } //dir.delete() 方法,返回的是boolean值 System.out.println(dir.toString() + ":" + dir.delete()); }}
转载地址:https://blog.csdn.net/qq_45337431/article/details/98887732 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年10月03日 18时13分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Win7 不能双击直接打开.txt .java 文件
2019-06-06
ElasticSearchwindow下搭建
2019-06-06
nginx之正向代理
2019-06-06
kubernetes之coredns玩法
2019-06-06
Shell常用命令
2019-06-06
Express使用html模板
2019-06-06
ie6兼容问题2——3像素间距
2019-06-06
简洁的JS实现Tab切换效果
2019-06-06
C# 使用Emit实现动态AOP框架 (三)
2019-06-06
第五次作业周总结
2019-06-06
个人报告04
2019-06-06
一次http完整的请求tcp报文分析
2019-06-06
iOS中sqlite和coreData的区别
2019-06-06
不能只延迟退休年龄而不辅之以综合性长远配套工程
2019-06-06
Android Context上下文解析
2019-06-06
第二章 向量(c)无序向量
2019-06-06
13_传智播客iOS视频教程_NSObject指针和id指针
2019-06-06
Silverlight 5 发布,新特性翻译及简单的特性解释
2019-06-06
TLE 中的教训
2019-06-06