File

File

Lambda表达式

new Thread(()->{方法体}).start();
    ()->{方法体}
        ()代表参数
        {}代表方法的代码
        ->代表把参数传给后面的代码
  • 可以使代买更简洁,冗余更少

File类

  • java.io.File类

    • 文件和目录路径名的抽象表示形式
  • java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作

  • 我们可以使用File类的方法

    创建一个文件/文件夹
    删除文件/文件夹
    获取一个文件/文件夹
    判断文件/文件夹是否存在
    对文件夹进行遍历
    获取文件的大小
  • File类是一个与系统无关的类,任何的操作系统都可以使用类中的方法

  • 重点:记住三个单词

    1. file:文件
    2. directory:文件夹/目录
    3. path:路径
  • 系统中的分隔符:
    static String pathSeparator;与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
    static char pathSeparatorChar:与系统有关的路径分隔符。

static String separator;与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static char separatorChar;与系统有关的默认名称分隔符。


File类的构造方法

  1. File(String pathname);通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

    • 参数:
      • String pathname 字符串的路径名称
      • 路径可以是真实存在,也可以不存在
      • 因为创建File对象,只是把字符串封装为File对象,不考虑路径的真假情况
  2. File(String parent, String child);根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

    • 参数:
      • String parent 父路径
      • String child 子路径
    • 好处:
      • 父路径和子路径可以单独的书写,使用起来灵活,父路径和子路径都可以变化
  3. File(File parent, String child);根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

    • 参数:
      • String parent 父路径
      • String child 子路径
    • 好处:
      • 父路径和子路径可以单独的书写,使用起来灵活,父路径和子路径都可以变化
      • 父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象

创建删除文件/文件夹相关的一些方法:

  1. public boolean createNewFile();当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
    • 文件不存在才会创建,文件存在则不创建
    • 创建文件的路径必须存在,否则会抛出异常
  2. public boolean delete();删除此抽象路径名表示的文件或目录。
  3. public boolean mkdir();创建此抽象路径名指定的目录。
    • 文件夹不存在才会创建,存在则不会创建。
    • 如果方法中的路径不存在,则返回false
  4. public boolean mkdirs();创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
    • 文件夹不存在才会创建,存在则不会创建。
    • 如果方法中的路径不存在,则返回false

File类中与获取相关的一些方法

  1. public String getAbsolutePath();返回此抽象路径名的绝对路径名字符串。
    • 无论构造方法中是相对路径还是绝对路径,此方法返回的都是绝对路径
  2. public String getPath();将此抽象路径名转换为一个路径名字符串。
    • 构造方法中是相对路径返回的就是相对路径,绝对路径返回的就是绝对路径。
  3. public String getName();返回由此抽象路径名表示的文件或目录的名称。
    • 获取的就是构造方法中传递路径的结尾部分,要么是文件,要么就是文件夹
  4. public long length();返回由此抽象路径名表示的文件的长度。
    • 获取的是构造方法指向的文件的大小,以字节为单位
    • 注意:
      1. 文件夹没有大小概念,不能获取文件夹大小
      2. 如果构造方法中给出的路径不存在,那么length方法返回0

File类中与判断相关的一些方法:

  1. public boolean exists();测试此抽象路径名表示的文件或目录是否存在。
  2. public boolean isDirectory();测试此抽象路径名表示的文件是否是一个目录。
    • 注意:使用前提是路径必须是存在的,否则都返回false
  3. public boolean isFile();测试此抽象路径名表示的文件是否是一个标准文件。
      • 注意:使用前提是路径必须是存在的,否则都返回false

File类遍历目录(文件夹)

  1. public String[] list();返回一个String数组,表示该File类目录中的所有子文件或目录
  2. public File[] listFiles();返回一个File数组,表示该File目录中的所有子文件或目录
  • 注意:
    1. list方法和listFiles方法遍历的是构造方法中给出的目录
    2. 如果构造方法中给出的目录的路径不存在,会抛出空指针异常
    3. 如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

文件过滤器

  • 在File类中有两个和listFiles重载的方法,方法的参数传递的就是过滤器:

    • File[] listFiles(FileFilter filter)

      • java.io.FileFilter接口:用于抽象路径名的过滤器
        • 作用:用来过滤文件
        • 抽象方法:用来过滤文件的方法:
          • boolean accept(File pathname);测试指定抽象路径名是否应该包含在某个路径名列表中。
          • 参数:
            • File pathname:使用listFiles遍历目录得到的每一个文件对象
      • File[] listFiles(FileFilter filter)
      • listFiles做了三件事:
        1. 遍历了目录
        2. 把遍历的File对象传递给FileFilter实现类对象的accept方法
        3. 如果accept返回值为true则保存到File数组中
    • File[] listFiles(FilenameFilter filter)

      • java.io.FilenameFilter接口:实现此接口的类实例可用于过滤器文件名
        • 作用:用于过滤文件名称
        • 抽象方法:用来过滤文件的方法:
          • boolean accept(File dir, String name);测试指定文件是否应该包含在某一文件列表中。
          • 参数:
            • File dir:构造方法中传递的被遍历的目录
            • String name:使用listFiles方法遍历目录获取的每一个文件/文件夹的名称
      • 原理与上面差不多,只是将File dir与String name封装称一个对象
  • 注意:两个过滤器接口,没有实现类,需要自己写实现类,重写accept方法,在方法中自己定义过滤的规则

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信