【04 核心类库】2.File类

2. File类(重点)

2.1 基本概念

java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息。

2.2 常用的方法

方法声明功能概述
File(String pathname)根据参数指定的路径名来构造对象
File(String parent, String child)根据参数指定的父路径和子路径信息构造对象
File(File parent, String child)根据参数指定的父抽象路径和子路径信息构造对象
boolean exists()测试此抽象路径名表示的文件或目录是否存在
String getName()用于获取文件的名称
long length()返回由此抽象路径名表示的文件的长度
long lastModified()用于获取文件的最后一次修改时间
String getAbsolutePath()用于获取绝对路径信息
boolean delete()用于删除文件,当删除目录时要求是空目录
boolean createNewFile()用于创建新的空文件
boolean mkdir()用于创建目录
boolean mkdirs()用于创建多级目录
File[] listFiles()获取该目录下的所有内容
boolean isFile()判断是否为文件
boolean isDirectory()判断是否为目录
File[] listFiles(FileFilter filter)获取目录下满足筛选器的所有内容

2.2.1 实现对文件的操作

		//文件的操作
//1.构造一个File对象与d:\\a.txt关联
        File f1 = new File("e:\\a.txt");      //  这里 \\==/
//2.判断文件是否存在,若存在则获取文件的特征信息并打印后删除文件
        if (f1.exists()) {
    //获取文件的名称 大小
            System.out.println("文件的名称是:" + f1.getName());
            System.out.println("文件的大小是:" + f1.length());
    //获取最后一次修改的时间
            Date d1 = new Date(f1.lastModified());
            SimpleDateFormat sdf = new SimpleDateFormat();
            System.out.println("最后一次修改是:" + sdf.format(d1));
    //获取文件的路径
            System.out.println("文件的绝对路径是:" + f1.getAbsolutePath());   //绝对路径
    //文件的删除
            System.out.println(f1.delete() ? "删除成功" : "删除失败");
        } else {

//3.若文件不存在则创建文件
            System.out.println(f1.createNewFile() ? "文件创建成功" : "文件创建失败");
        }

2.2.2 实现对目录的操作

//5.实现指定目录下的所有内容打印出来
        File f3 = new File("e:/a");
   //获取f3的所有内容并记录到一维数组当中
        File[] files = f3.listFiles();
   //遍历数组
        for (File file : files) {
            String name = file.getName();
   //判断是否是文件,如果是则打印出来
            if (file.isFile()) {
                System.out.println(name);
            }
   //判断是否是目录,如果是则加上[]再打印出来
            if (file.isDirectory()) {
                System.out.println("[" + name + "]");
            }
        }
        System.out.println("==============================");

//6.实现获取指定目录内容获取的同时进行过滤
        //File[] listFiles(FileFilter filter)   返回值是数组类型,参数列表是接口类型,要先实现接口的实例化
        //匿名表达式:接口/父类名称 引用变量名=new 接口/父类名称() {方法体};
      /*  FileFilter fileFilter= new FileFilter() {
            @Override
            public boolean accept(File pathname) {      测试指定的抽象路径名是否应包含在路径名列表中
                return pathname.getName().endsWith(".avi");   //返回的是true
            }
        };*/
        //正则表达式:(参数列表)-> {方法体}
        FileFilter fileFilter = (File pathname) -> {        //测试指定的抽象路径名是否应包含在路径名列表中
            return pathname.getName().endsWith(".avi");
        };

        File[] files1 = f3.listFiles(fileFilter);   //将符合条件的文件名放入数组中
        for (File ff : files1) {
            System.out.println(ff);     //e:\a\c.avi
        }
        System.out.println("----------------------------");
//7.使用递归的思想获取目录极其子目录的内容
        show(new File("e:/a"));

//自定义成员方法实现指定目录以及子目录中所有内容的打印
	//此方法与main方法平级
    public static void show(File file) {
        //获取f3的所有内容并记录到一维数组当中
        File[] files = file.listFiles();
        //遍历数组
        for (File tf : files) {
            String name = tf.getName();
            //判断是否是文件,如果是则打印出来
            if (tf.isFile()) {
                System.out.println(name);
            }
            //判断是否是目录,如果是则加上[]再打印出来
            if (tf.isDirectory()) {
                System.out.println("[" + name + "]");
                show(tf);
            }
        }
    }

2.3 注意事项

绝对路径:是一个完整的路径
        以盘符名称开头的路径:(D:\\java培训课程\\02-Java语言进阶\\day08_File类、递归\\课件资料\\a.txt)

相对路径:是一个简化的路径
        相对指的是相对于当前根目录(D:\\java培训课程\\02-Java语言进阶\\day08_File类、递归\\课件资料\\a.txt)
        如果使用当前项目的根目录可以简化书写
        D:\\java培训课程\\02-Java语言进阶\\day08_File类、递归\\课件资料\\a.txt-->可以简化为:a.txt
注意事项:
        1.路径是不区分大小写的
        2.路径的文件分隔符windows使用的是反斜杠,反斜杠是转义字符,两个放斜杠代表一个正常的反斜杠
		String str = File.pathSeparator;
        System.out.println(str);    // ;    路径分隔符  windows:分号   linux:冒号

        String str1 = File.separator;
        System.out.println(str1);   // \    文件名称分隔符     windows:反斜杠\     linux:正斜杠/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江桥诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值