File递归【递归遍历目录】

File文件基本操作:

案例需求:

  • 给定一个路径(E:\Hmw),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台

思路:

  • 通过递归遍历

具体方法:

  1. 首先通过目录名创建文件对象
  2. 写一个lookDirectory方法用来遍历文件目录
  3. 首先通过listFiles方法获取目录的所有文件对象
  4. 通过增强for循环遍历目录 得到目录里的每一个文件对象
  5. 接下来判断条件尤为重要
    - 通过isFile()方法判断是否为文件 是文件即输出文件的绝对路径
    - 若不为文件即为目录,也可用isDirectory方法判断,是目录即递归调用该方法
  6. 以上即可完成遍历所有目录 具体见以下代码

删除所有文件及其目录:

  1. 递归实现
  2. 判断一个文件夹是否为空可以通过file.directory.length是否等于0来判断 因为返回的是一个File数组
    • 若为文件则直接调用delete删除
    • 若为目录且目录不为空,继续遍历 为空则删除目录

运行结果

package cn.dreamyi.demo1.file;

import java.io.File;

public class FileDemo2 {
    
    
    public static void main(String[] args) {
    
    
        /**
         * 案例需求
         *
         * ​	给定一个路径(E:\\itcast),通过递归完成遍历该目录下所有内容,并把所有文件的绝对路径输出在控制台
         */

        //首先创建文件对象
        File f = new File("D://Hmw");

        lookDirectory(f);//遍历目录
        deleteFile(f);//删除文件
    }

    /**
     * 定义遍历方法
     * @param file 需要遍历的目录
     */
    public static void lookDirectory(File file){
    
    
        File[] files = file.listFiles();//得到目录下的所有文件对象

        for (File item : files){
    
    
            if (item.isFile()){
    
    
                System.out.println("\t\t"+item.getAbsolutePath());
            } else {
    
    
                System.out.println(item.getAbsolutePath());
                lookDirectory(item);
            }
        }
    }
    /**
     * 删除文件
     * @param file 需要删除的文件对象
     */
    public static void deleteFile(File file){
    
    
        File[] files = file.listFiles();
        if (files.length == 0){
    
    
            file.delete();
        } else {
    
    
            for (File item : files){
    
    
                if (item.isFile()){
    
    
                    item.delete();
                } else {
    
    
                    if (item.listFiles().length == 0){
    
    
                        item.delete();
                    } else {
    
    
                        deleteFile(item);
                    }
                }
            }
        }
    }

}

公众号:【从简出发(mmk_xgg)】
一起进步呀
一起进步呀

猜你喜欢

转载自blog.csdn.net/weixin_42143994/article/details/114085650