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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:File类的使用——归档文件
下一篇:HashMap实现类——循环添加键值对

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年10月03日 18时13分47秒