File类

第一章 File 类

1.1 概述

java.io.File 类是文件和路径的抽象表示,主要用于文件和路径的创建、查找和删除等等操作。

1.2 构造方法

•	public File(String pathname):通过给定的路径名字符串转换为抽象路径名来创建新的 File 实例
•	public File(File parent, String child):把父路径字符串和子路径的字符串组合后创建新的File 实例
•	public File(String parent, String child):把父路径字符串和子路径的字符串组合后创建

案例:

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:/");
//
        File file01 = new File("D:/", "a.txt");
        File file02 = new File(file, "b.txt");
    }
}

1.3 常用方法
获取方法

•	public String getAbsolutePath():获取绝对路径
•	public String getPath():将此File对象转换为路径名字符串
•	public String getName():返回此File所表示的文件或目录的名称
•	public long length():返回此 File 表示的文件的长度

public class Demo01 {
    public static void main(String[] args) {

        //再File这里的相对路径,是从项目根目录开始。
        //也就说,相对于项目根目录
        File file = new File("out\\production\\studySe\\day21\\a.txt");
//        File file = new File("xxx/xxx/xx.png");

        String aPath = file.getAbsolutePath();
//        aPath = file.getPath();

        String name = file.getName();

        long length = file.length();

        System.out.println(length);
    }
}

注意:在创建 File 对象时,使用的相对路径,是相对于项目根目录的。
判断方法

•	public boolean exists():此 File 表示的文件或目录是否实际存在
•	public boolean isDirectory():表示此File对象是否为一个目录
•	public boolean isFile():此File 对象是否为文件

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\Projects\\IdeaProjects");
        System.out.println(file.isDirectory()); //true
        System.out.println(file.isFile()); //false
        System.out.println(file.exists()); //true
    }
}

创建删除方法

•	public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个新的空文件。
•	public boolean delete():删除此 File 对象表示的文件或目录
•	public boolean mkdir():创建此 File 表示的目录
•	public boolean mkdirs():创建此File 表示的目录,包括任何必须单不存在的父目录。

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:/a/b");
        if (!file.exists()) {
            file.mkdirs();
        }
//        file.delete();
    }
}

目录的遍历

•	public String[] list():返回一个字符串数组,表示该 File 目录中的所有子文件或目录
•	public File[] listFiles():返回一个 File 数组,表示该 File 目录中的所有子文件或目录
•   String [ ]  str = file.list();  和  File [ ]  str = file.list();  的区别是String 直接获取文件名字   而 file 还获取到了全路径



public class Demo01 {
        public static void main(String[] args) {
            File file = new File("D:\\Projects\\IdeaProjects");
    //        String[] list = file.list();
    //        for (String str : list) {
    //            System.out.println(str);
    //        }
            File[] files = file.listFiles();
            for (File f : files) {
                System.out.println(f);
            }
        }
    }

第二章 递归

2.1 概述
递归:指在当前方法内调用自己的这种现象。
递归的分类:
• 直接递归,成为方法自己的调用
• 间接递归,可以 A 方法调用 B 方法, B 方法调用 C 方法, C 方法在调用 A 方法。
注意事项:
• 递归一定要由条件限定,保证递归能停止下来,否则会发生栈内存溢出。
• 在递归中虽然由限定条件,但递归次数也不能太多,否则也会发生内存溢出。
• 构造方法,禁止递归。
2.2 递归累加求和
计算 1~ n 的和

public class Demo01 {
    public static void main(String[] args) {
        //5
        System.out.println(getSum(5));
    }

    public static int getSum(int i) {
        if (i == 1) {
            return 1;
        }
        return i + getSum(i - 1);
    }
}

2.3 递归求阶乘

public class Demo01 {
    public static void main(String[] args) {
        //5
        System.out.println(getSum(5));
    }

    public static int getSum(int i) {
        if (i == 1) {
            return 1;
        }
        return i * getSum(i - 1);
    }
}

2.4 递归打印多级目录

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\Projects\\IdeaProjects\\studySe\\src");
        printFile(file);
    }

    //递归打印某个目录下的所有文件或文件夹
    public static void printFile(File file) {
        if (file.isFile()) {
            System.out.println(file.getName());
        } else if (file.isDirectory()) {
            System.out.println(file.getName());
            File[] files = file.listFiles();
            for (File f: files) {
                printFile(f);
            }
        }
    }
}

第三章 综合案例

3.1 文件搜索
搜索某个目录下所有的.java文件

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\Projects\\IdeaProjects\\studySe\\src");
        printFile(file);
    }

    //递归打印某个目录下的所有文件或文件夹
    public static void printFile(File file) {
        if (file.isFile()) {
            if (file.getName().endsWith(".java")) {

                System.out.println(file.getName());
            }
        } else if (file.isDirectory()) {
//            System.out.println(file.getName());
            File[] files = file.listFiles();
            for (File f : files) {
                printFile(f);
            }
        }
    }
}

3.2 文件过滤器优化
java.io.FileFilter 是一个接口,它是 File 的过滤器。该接口的对象可以传递给 File 类的 listFiles(FileFilter) 作为参数,接口中只有一个方法:
boolean accept(File pathname):测试 pathname 是否应该包含在当前File 目录中,符合条件则返回true
改写程序

public class Demo01 {
    public static void main(String[] args) {
        File file = new File("D:\\Projects\\IdeaProjects\\studySe\\src");
        printFile(file);
    }

    //递归打印某个目录下的所有文件或文件夹
    public static void printFile(File file) {

        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //过滤条件
                return pathname.getName().endsWith(".java") || pathname.isDirectory();
            }
        });
        for (File f :
                files) {
            if (f.isFile()) {
                System.out.println(f.getName());
            } else if (f.isDirectory()) {
                printFile(f);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值