当前位置: 代码迷 >> 综合 >> 递归删除文件夹及下所有文件
  详细解决方案

递归删除文件夹及下所有文件

热度:70   发布时间:2024-01-20 17:47:06.0

代码如下:

/*** 删除文件夹下所有子孙文件* 优点:不产生新对象,对内存友好* 缺点:不能删除子孙文件夹* @param path*/public static void delDirAndFile(Path path){boolean directory = Files.isDirectory(path);try {if(directory){List<Path> collect = Files.list(path).collect(Collectors.toList());if(collect.size()==0){Files.deleteIfExists(path);}else {collect.forEach(childPath-> delDirAndFile(childPath));// 不删除文件夹,java内部的bug,删除返回成功,但并未真正删除//Files.deleteIfExists(path);}}else {Files.deleteIfExists(path);}}catch (Exception e){e.printStackTrace();}}/*** 深度删除文件夹* 优点:可以删除所有的子孙文件夹及文件* 缺点:有多少个文件就会new多少个对象,且在方法执行完才会释放* @param dirPath*/public static void deleteDir(String dirPath) {File file = new File(dirPath);if (file.isFile()) {file.delete();} else {File[] files = file.listFiles();if (files == null) {file.delete();} else {for (int i = 0; i < files.length; i++) {deleteDir(files[i].getAbsolutePath());}file.delete();}}}

使用第一个方法,调试了很久也没找到解决方案。删除空文件夹明明返回的true,但是就是没有删掉,这个使用手动也删除不了。应该是被占用了,不知道有没有大神知道为什么?如何处理;于是,第一个删除文件的方法被阉割了,只能删除文件不能删除文件夹

  相关解决方案