当前位置: 首页 > news >正文

Test_Java_File类递归练习(删除该文件夹)

需求:从键盘接收一个文件夹路径,删除该文件夹

import java.io.File;
import java.util.Scanner;

public class Test2 {

    /*
     * 需求:从键盘接收一个文件夹路径,删除该文件夹
     * 
     * 分析:
     * 从键盘接收一个文件夹路径:    
     * 1.创建键盘录入对象
     * 2.定义一个无限循环
     * 3.将键盘录入的结果存储并封装成File对象
     * 4.对File对象判断
     * 5.将文件夹路径对象返回
     * 
     * 
     * 删除该文件夹
     * 1.获取该文件夹下的所有文件和文件夹
     * 2.遍历数组
     * 3.判断是文件直接删除
     * 4.如果是文件夹就递归调用
     * 5.循环结束后,把空文件夹删掉
     */
    public static void main(String[] args) {
        File dir = getDir();
        deleteFile(dir);
    }

    /*
     * 从键盘接收一个文件夹路径:
     * 1.返回值类型File
     * 2.参数列表无
     */
    public static File getDir(){
        //1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径:");
        //2.定义一个无限循环
        while(true){
            //3.将键盘录入的结果存储并封装成File对象
            String line = sc.nextLine();
            File dir = new File(line);
            //4.对File对象判断
            if(!dir.exists()){
                System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:");
            }else if(dir.isFile()){
                System.out.println("您录入的是文件夹路径,请输入一个文件路径:");
            }else{
                //5.将文件夹路径对象返回
                return dir;
            }
        }
    }

    /*
     * 删除该文件夹
     * 1.返回值类型void
     * 2.参数列表File dir
     */
    public static void deleteFile(File dir){
        //1.获取该文件夹下的所有文件和文件夹
        File[] subFiles  = dir.listFiles();
        //2.遍历数组
        for (File subFile : subFiles) {
            //3.判断是文件直接删除
            if(subFile.isFile()){
                subFile.delete();
            }else{
            //4.如果是文件夹就递归调用
                deleteFile(subFile);
            }
        }
        //5.循环结束后,把空文件夹删掉
        dir.delete();
    }
}

这里写图片描述

注意:该方法删除的文件,在回收站无法找回

转载于:https://www.cnblogs.com/soarsir/p/7662516.html

相关文章:

  • eclipse中git分支创建与合并(-)
  • 【BZOJ1316】树上的询问 点分治+set
  • 修改JDK版本配置
  • html5中play 方法和pause方法在video的应用
  • 树与二叉树(数据结构)
  • DB2 alter表字段
  • 各种方法配置 Visual Studio 第三方库
  • BZOJ2303: [Apio2011]方格染色
  • WINFORM TableLayout控件双缓冲防止闪烁
  • Session详解
  • javaAPI1
  • 77 最长公共子序列 (lintcode)
  • struts spring hibernate 三大框架实现基本的增删改查技术
  • 写代码的一些常识
  • warning: assignment from incompatible pointer type [enabled by default]
  • const let
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • HashMap ConcurrentHashMap
  • 从零开始的无人驾驶 1
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序开发中的那些坑
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Android开发者必备:推荐一款助力开发的开源APP
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #includecmath
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $(selector).each()和$.each()的区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法设计与分析)第一章算法概述-习题
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)Dubbo快速入门、介绍、使用
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)scrum常见工具列表
  • (转)我也是一只IT小小鸟
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net的DataSet直接与SQL2005交互
  • .NET关于 跳过SSL中遇到的问题
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .ui文件相关
  • @angular/cli项目构建--http(2)
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 转载 ] SharePoint 资料
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [Android View] 可绘制形状 (Shape Xml)
  • [AX]AX2012 SSRS报表Drill through action
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)