JAVA从零开始学习知识整理——day08—【File类、递归】

一、File类
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
1.构造方法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
2.常用方法
-getAbsolutePath:获取绝对路径
-getPath:获取路径
-getName:获取文件/或者目录的名字
-length:获取文件长度
3.绝对路径和相对路径
绝对路径:从盘符开始的路径,这是一个完整的路径。
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
4.判断功能方法
-isDirectory:是否为文件夹
-isFile:是否为文件
-exists:文件/目录是否存在
5.创建删除方法
-creatNewFile:当且仅当该名称文件不存在时,创建一个新的空文件
-delete:不走回收站的删除
-mkdir:创建文件夹
-mkdirs:创建多级文件夹
6.目录的遍历:
-list:返回一个String数组,表示当前File目录中所有的子文件和文件夹
-listFile:返回一个File数组,表示当前File目录中所有的子文件和文件夹

二、递归
在当前方法内调用自己。
例:计算1-n的和:

public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n:");
        int n = sc.nextInt();
        int method = method(n);
        System.out.println(method);
    }

    private static int method(int n) {
        if(n ==1){
            return 1;
        }
        return  n + method(n-1);
    }
}

求阶乘改为*即可。

三、综合案例
3.1 文件搜索

public class Demo {
    public static void main(String[] args) {
        //创建一个路径对象
        File f1 = new File("D:\\课件\\就业班\\day07-13\\day08");
        method(f1);
       
       
    }

    private static void method(File f1) {
        //调用listFile方法,获取当前路径下的文件夹和文件
        File[] files = f1.listFiles();
        //进行遍历
        for (File file : files) {
            if(file.isDirectory()){
                method(file);
            }else {
                System.out.println(file);
            }
        }
    }
}

3.2 文件过滤器优化
搜索后缀名是.java的文件:

public class Demo {
    public static void main(String[] args) {
        //创建一个路径对象
        File f1 = new File("D:\\课件\\就业班\\day07-13\\day08");
        method(f1);
       
       
    }

    private static void method(File f1) {
        //调用listFile方法,获取当前路径下的文件夹和文件
        File[] files = f1.listFiles();
        //进行遍历
        for (File file : files) {
            if(file.isDirectory()){
                method(file);
            }else {
                System.out.println(file);
            }
        }
    }
}

采用过滤器和lambda表达式优化:

public class Demo {
    public static void main(String[] args) {
        //创建一个路径对象
        File f1 = new File("D:\\课件\\就业班\\day07-13\\day08");
        method(f1);


    }

    private static void method(File f1) {
        //进行遍历
        //调用listFile方法,获取当前路径下的文件夹和文件
        File[] files = f1.listFiles((File pathname)-> pathname.toString().toLowerCase().endsWith(".java") || pathname.isDirectory());
         for (File file : files) {
            if (file.isDirectory()) {
                method(file);
            } else {
                //if (file.toString().toLowerCase().endsWith(".java")) {
                    System.out.println(file);
                //}
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44167508/article/details/85404664