★逐風~ 2022-05-08 17:53 采纳率: 60%
浏览 23
已结题

关于文件类的问题-IO流

问题遇到的现象和发生背景

删除不了文件夹(目录)中还有文件夹(子目录)的文件

问题相关代码,请勿粘贴截图

public static void deleteDir() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入需要删除的源目录:");
String delPath = sc.next();// 从控制台获取源路径
File dir = new File(delPath); // 创建一个代表目录的File对象
if (dir.exists()) {
File[] files = dir.listFiles(); // 得到File数组
for (File file : files) { // 遍历所有的子目录和文件
if (file.isDirectory()) {
deleteDir(); // 如果是目录,递归调用deleteDir()
} else {
// 如果是文件,直接删除
file.delete();
}
}
// 删除完一个目录里的所有文件后,就删除这个目录
dir.delete();
System.out.println("删除成功!");
}
else
System.out.println("查无此目录!");
}
}

运行结果及报错内容

'File.delete()' 的结果已忽略
'dir.delete()' 的结果已忽略

我的解答思路和尝试过的方法
我想要达到的结果

可以删除一个文件夹(目录)及其里的文件夹(子目录)和文件;

  • 写回答

2条回答 默认 最新

  • imxzs 2022-05-09 19:37
    关注

    public class Test {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("请输入需要删除的源目录:");
    String delPath = sc.next();
    deleteDir(delPath);
    }

    //改为参数传入,不然递归会一直调用控制台输入
    public static void deleteDir(String path) {
        File dir = new File(path);
        if (dir.exists()) {
            File[] files = dir.listFiles();
            for (File file : files) {
                //代表文件,以及空文件夹删除
                if (file.isFile() || file.listFiles().length == 0) {
                    file.delete();
                } else {
                    //有文件的文件夹,递归进入删除
                    deleteDir(file.getPath());
                }
            }
        }
        //代表一层一层的删除
        dir.delete();
    }
    

    }
    望采纳,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 5月8日

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R