java递归删除路径下的所有文件及文件夹

编程入门 行业动态 更新时间:2024-10-11 17:26:36

java<a href=https://www.elefans.com/category/jswz/34/1771140.html style=递归删除路径下的所有文件及文件夹"/>

java递归删除路径下的所有文件及文件夹

Help:
今天收到一个求助,朋友小明说接到一个需求其中的一部分内容是将整理的文件在C:xxx\Temp\下执行打包,当打包完成后删除原来整理的资料内容,包含文件夹
error:
小明写好代码后报错信息提示::  Unable to delete file ---无法删除文件
常规分析:
1.有可能有流对该文件进行操作2.有可能有流对该文件操作完没有进行关流操作3.有可能时外部进程或那个程序在占用该文件。

由于哥们朋友用的是内网开发,我也远程不了他,就用了最简单高效的判断方法,即找到文件的路径将提示删除不掉的文件手动进行删除,如果该文件有占用的话,系统会提示出来,经哥们朋友的一顿操作后发现好像是自己的代码写的有问题,那我又远程不了他,只能将代码写出来发给他进行验证,不过呢像这种java基础的东西可能也没有高大上而优雅的写法,我就用简单的java.io.File进行操作,感兴趣的小伙伴们可以一同来看看,当然还有其它更好更优雅的代码比如糊涂工具的那一套,本次就没有使用啦,因为不知道引入糊涂依赖哥们朋友那面的单位是否允许,好啦,废话少说,代码来啦

package com.kk;import java.io.File;public class TestDemo {public static void main(String[] args) {//定义待处理的文件夹路径String path = "D:\\A\\a.png"; dealFiles(path);}/*** 递归处理某路径下的所有文件,文件夹** @param clientBase*/public static void dealFiles(String clientBase) {File file = new File(clientBase);if (file.isDirectory()) {File[] files = file.listFiles();for (File item : files) {if (item.isDirectory()) {//继续读取目录下文件或文件夹dealFiles(item.getPath()); } else {rmFile(item);}}} else {rmFile(file);}}/*** 判断是否是以“.lastUpdated”结尾的文件,若是则删除* 或是“_remote.repositories”命名的文件,若是则删除** @param file*/public static void rmFile(File file) {if (file.getName().endsWith(".lastUpdated")) {file.delete();System.out.println("删除文件:" + file.getPath());} else if (file.getName().equals("_remote.repositories")) {file.delete();System.out.println("删除文件:" + file.getPath());}}
}

经过哥们朋友的验证反馈,nice,顺利删除文件后,高兴了一会后发现存放文件的文件夹没有删除掉,正在挠头的时候,修改的终版代码来啦

package com.kk;import java.io.File;public class TestDemo1 {public static void main(String[] args) {//待处理的文件夹路径String path = "D:\\A\\a.png";dealFiles(path);}/*** 递归处理某路径下的所有文件,文件夹** @param clientBase*/public static void dealFiles(String clientBase) {File file = new File(clientBase);if (file.isDirectory()) {File[] files = file.listFiles();for (File item : files) {if (item.isDirectory()) {//继续读取目录下文件或文件夹dealFiles(item.getPath());} else {rmFile(item);}}// 检查文件夹是否为空,如果为空则删除if (file.list().length == 0) {file.delete();System.out.println("删除文件夹:" + file.getPath());}} else {rmFile(file);}}/*** 判断是否是以“.lastUpdated”结尾的文件,若是则删除* 或是“_remote.repositories”命名的文件,若是则删除** @param file*/public static void rmFile(File file) {if (file.getName().endsWith(".lastUpdated")) {file.delete();System.out.println("删除文件:" + file.getPath());} else if (file.getName().equals("_remote.repositories")) {file.delete();System.out.println("删除文件:" + file.getPath());}// 检查文件所在的文件夹是否为空,如果为空则删除File parentFile = file.getParentFile();if (parentFile.list().length == 0 && parentFile.exists()) {parentFile.delete();System.out.println("删除文件夹:" + parentFile.getPath());}}
}

是不是很简单,好啦,就分享到这里啦,看了这么久送你句良言:

                                                    看似寻常最奇崛,成如容易却艰辛。

                                                                                                              不管用没有用,给个关注再走哈

更多推荐

java递归删除路径下的所有文件及文件夹

本文发布于:2024-02-06 12:45:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748894.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   文件夹   路径   文件   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!