IO流(学习Java第23天)(File类)

本文详细介绍了Java中File类的基本概念、静态成员变量、构造方法、获取属性的方法、文件及目录的操作,包括创建、删除,以及遍历目录和使用文件过滤器。通过实例演示了如何使用File类进行文件和目录的管理,涵盖了路径分隔符、名称分隔符、文件属性获取、文件创建与删除、目录遍历和文件过滤等功能。
摘要由CSDN通过智能技术生成

目录

一.File类概述

二.File类的静态成员变量

三.File类的构造方法

三.File类的获取方法

四.File类的创建和删除功能

六.File类目录遍历方法

七.File类的文件过滤器


一.File类概述

java.io.File 文件和目录路径名的抽象表示形式;主要用于文件和目录的创建、查找和删除等操作。File类将文件,文件夹和路径封装成了对象,提供大量的方法来操作这些对象。

  • 文件:存储实际数据的容器,File
  • 目录:文件夹,Directory
  • 路径:文件或者目录在磁盘中的存储位置,Path

二.File类的静态成员变量

  • static String pathSeparator  与系统有关的路径分隔符
    • Window操作系统,分隔符是分号
    • Linux操作系统,分隔符是冒号
  • static String separator 与系统有关的默认名称分隔符
    • Window操作系统,名称分割符号为 \
    • Linux操作系统,名称分隔符号为 /

public class Demo01 {
    public static void main(String[] args) {
        //static String pathSeparator
        //与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
        String pathSeparator = File.pathSeparator;
        System.out.println(pathSeparator);

        //static String separator
        // 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
        String separator = File.separator;
        System.out.println(separator);
    }
}

 

三.File类的构造方法

  • File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
  • File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
  • File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
public class Demo02 {
    public static void main(String[] args) {
        method01();
        method02();
        method03();
    }

    //File(String pathname)
    //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
    public static void method01(){
        File file = new File("D:\\ORACLE\\a");
        System.out.println(file);
    }

    // File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
    // 传递字符串的父路径和传递字符串的子路径,可以单独操作父路径和单独操作字符经
    public static void method02(){
        File file = new File("D:\\ORACLE", "a\\a.java");
        System.out.println(file);
    }

    //File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
    // 传递File类型的父路径和字符串的子路径
    public static void method03(){
        File parent = new File("D:\\ORACLE");
        File file = new File(parent, "a.java");
        System.out.println(file);
    }
}

三.File类的获取方法

  • String getName() 返回由此抽象路径名表示的文件或目录的名称
  • File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
  • long length() 返回由此抽象路径名表示的文件的长度
  • File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式
  • String getPath() 将此抽象路径名转换为一个路径名字符串
public class Demo03 {
    public static void main(String[] args) {
//        method01();
//        method02();
//        method03();
//        method04();
        method05();
    }
    /**
     * String getName() 返回由此抽象路径名表示的文件或目录的名称
     *        获取构造方法中封装的路径的最后的名称
     *        名称可能是文件夹名,可能是文件名
     */
    public static void method01(){
        File file = new File("D:\\ORACLE\\a");
        System.out.println(file.getName());

        File file1 = new File("D:\\ORACLE\\a\\A.java");
        System.out.println(file1.getName());
    }

    /**
     * File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
     *         获取构造方法中封装的路径的父路径
     *         方法返回的是File对象,可以使用方法调用链
     */
    public static void method02(){
        File file = new File("D:\\ORACLE\\a");
        File parentFile = file.getParentFile();
        System.out.println(parentFile);
        System.out.println(parentFile.getParentFile());
    }

    /**
     * long length() 返回由此抽象路径名表示的【文件】的长度
     *         获取构造方法中路径表示的文件的字节数
     */
    public static void method03(){
        File file = new File("D:\\ORACLE\\a\\c.txt");
        System.out.println(file.length());

        File file1 = new File("D:\\ORACLE\\a");
        System.out.println(file1.length());
    }

    /**
     *  File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式
     *         返回构造方法中路径的绝对路径,返回值是File对象
     *         注意:直接残敌文件名或者文件夹名,获取到的绝对路径,将从IDEA的工程下计算
     */
    public static void method04(){
        File file = new File("D:\\ORACLE\\a\\A.java");
        System.out.println(file.getAbsoluteFile());

        File file1 = new File("A.java");
        System.out.println(file1.getAbsoluteFile());
    }

    /**
     * String getPath() 将此抽象路径名转换为一个路径名字符串
     *         将构造方法中的路径转成字符串类型
     */
    public static void method05(){
        File file = new File("D:\\ORACLE\\a\\A.java");
        System.out.println(file.getPath());
    }
}

四.File类的创建和删除功能

  • boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
  • boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录 
  • boolean delete() 删除此抽象路径名表示的文件或目录
public class Demo04 {
    public static void main(String[] args) throws IOException {
//        method01();
//        method02();
        method03();
    }


    /**
     *    boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
     *         创建之前是不存在的新文件,创建成功返回true
     *         如果存在,不创建,返回false
     *         创建文件的路径写在File类的构造方法中
     *         该方法只能创建文件
     */
    public static void method01() throws IOException {
        File file = new File("D:\\ORACLE\\a\\C.java");
        boolean newFile = file.createNewFile();
        System.out.println(newFile);
    }

    /**
     *  boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
     *         创建之前不存在的文件夹,创建成功返回true
     *         如果文件夹存在,不创建,返回false
     *         该方法只能创建文件夹
     *         mkdirs():可以同时创建多级目录
     *         mkdir():只能创建一级目录
     */
    public static void method02(){
        File file = new File("D:\\ORACLE\\a\\b\\c");
        boolean mkdirs = file.mkdirs();
        System.out.println(mkdirs);
    }

    /**
     * boolean delete() 删除此抽象路径名表示的文件或目录
     *         删除目录或者是文件
     *         删除成功返回true,删除File构造方法封装路径
     *         注意:删除文件夹,保证文件夹是空的,否则不能删除
     */
    public static void method03(){
//        File file = new File("D:\\ORACLE\\a\\b\\c");
//        boolean delete = file.delete();
//        System.out.println(delete);

        File file1 = new File("D:\\ORACLE\\a\\b");
        file1.delete();
    }
}

五.File类判断方法

  • boolean exists() 测试此抽象路径名表示的文件或目录是否存在
  • boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录
  • boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
public class Demo {
    public static void main(String[] args) throws Exception {
        method03();
    }

    /*

        boolean exists() 测试此抽象路径名表示的文件或目录是否存在

        判断File构造方法中封装的路径是否存在,存在返回true

        此File表示的文件或目录是否实际存在
     */
    public static void method01() throws Exception {
        File file01=new File("d:\\a\\b");
        boolean b1 = file01.exists();
        System.out.println(b1);//true
        File file02=new File("d:\\a\\b\\a.txt");
        boolean b2 = file02.exists();
        System.out.println(b2);//true
        File file03=new File("d:\\e.txt");
        boolean b3 = file03.exists();
        System.out.println(b3);//false
    }
    /*

        boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录
        判断File构造方法中路径是不是文件夹;是文件夹,返回true
     */
    public static void method02(){
        File file01=new File("d:\\a");
        boolean b1 = file01.isDirectory();
        System.out.println(b1);
    }

    /*
        boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
        判断File构造方法中,封装的路径,是不是文件,是文件,返回true
     */

    public static void method03(){
        File file01=new File("d:\\a\\b\\a.txt");
        boolean b1 = file01.isFile();
        System.out.println(b1);
    }
}

六.File类目录遍历方法

  • File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
public class Demo05 {
    public static void main(String[] args) {
        method01();
    }
    public static void method01(){
        File file = new File("D:\\ORACLE\\a");
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println(f);
        }
        System.out.println(files.length);
    }
}

七.File类的文件过滤器

  • public File[] listFiles(FileFilter filter)返回一个File数组,表示该File目录中的所有的子文件或目录,filter是文件过滤器,可以过滤不需要的文件
  • FileFilter接口
    • 文件过滤器接口,此接口的实现类可以传递给方法listFiles(),实现文件的过滤功能
    • FileFilter接口方法:public boolean accept(File path):方法参数就是listFiles()方法获取到的文件或者目录的路径。如果方法返回true,表示需要此路径,否则此路径将被忽略
public class Demo05 {
    public static void main(String[] args) {
        method01();
    }
    public static void method01(){
        File file = new File("D:\\ORACLE\\a");
        File[] files = file.listFiles(new MyFilter());
        for (File f : files) {
            System.out.println(f);
        }
        System.out.println(files.length);
    }
}
class MyFilter implements FileFilter{
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().toLowerCase().endsWith(".java");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值