美文网首页
Java_File类

Java_File类

作者: 山巅自相见 | 来源:发表于2021-07-12 15:31 被阅读0次

    概述

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

    构造方法

    • public File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
    • public File(String parent, String child):从父路径名字符串和子路径名字符串船舰新的File实例。
    • public File(File parent, String child):从父抽象路径名和子路径名字符串创建新的File实例。
    • 构造举例,代码如下:
    // 文件路径名
    String pathname1 = "D:\\aaa.txt";
    File file1 = new File(pathname);
    
    // 文件路径名
    String pathname2 = "D:\\aaa\\bbb.txt";
    File file2 = new File(pathname2);
    

    绝对路径和相对路径

    绝对路径:是一个完成的路径,以盘符(c:, D:)开始的路径
    D:\maven\apache-maven-3.8.1\boot\plexus-classworlds.licenseD:\Nginx\nginx-1.20.1\nginx-1.20.1\contrib\vim\ftplugin\nginx.vim
    相对路径:是一个简化路径
    D:\maven\apache-maven-3.8.1\boot\plexus-classworlds.license-->简化为:plexus-classworlds.license(可以省略项目的根目录)
    注意:

    1. 路径不区分大小写
    2. 路径中的文件名称分隔符windows使用分斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的斜杠

    常用方法

    获取功能的方法

    • public String getAbsolutePath():返回此File的绝对路径名字字符串。
    • public String getPath():将此File转换为路径名字符串。
    • public String getName():返回由此File表示的文件或目录的名称。
    • public long length():返回由此File表示的文件的长度。
      方法演示:代码如下:
    import java.io.File;
    
    public class Demo02File {
      public static void main(String[] args) {
        File file1 = new File("d:/aaa/bbb.java");
        ystem.out.println("文件绝对路径" + file1.getAbsolutePath());
        System.out.println("文件构造路径" + file1.getPath());
        System.out.println("文件名称" + file1.getName());
        /*注意:
        *   文件夹是没有大小概念的,不能获取文件夹的大小
        *   如果构造放啊中给出的路径不存在,那么length方法返回0*/
        System.out.println("文件长度" + file1.length() + "字节");
        File file2 = new File("d:/aaa");
        System.out.println("文件绝对路径" + file2.getAbsolutePath());
        System.out.println("文件构造路径" + file2.getPath());
        System.out.println("文件名称" + file2.getName());
        System.out.println("文件长度" + file2.length());
      }
    }
    输出结果:
      文件绝对路径d:\aaa\bbb.java
      文件构造路径d:\aaa\bbb.java
      文件名称bbb.java
      文件长度0字节
      文件绝对路径d:\aaa
      文件构造路径d:\aaa
      文件名称aaa
      文件长度0
    

    判断功能的方法

    • public boolean exists():此File表示的文件或目录是否实际存在。
    • public boolean isDirectory():此File表示的是否为目录
    • public boolean idFile():此File表示的是否为文件
      方法演示,代码如下:
    import java.io.File;
    
    public class Demo03File {
      public static void main(String[] args) {
        File file = new File("d:\\aaa\\bbb.java");
        File file1 = new File("d:\\aaa");
        // 判断是否存在
        System.out.println("d:\\aaa\\bbb.java是否存在:" + file.exists());
        System.out.println("d:\\aaa是否存在:" + file1.exists());
        // 判断是文件还是目录
        System.out.println("d:\\aaa 文件?:" + file1.isFile());
        System.out.println("d:\\aaa 目录?:" + file1.isDirectory());
      }
    }
    输出结果:
      d:\aaa\bbb.java是否存在:false
      d:\aaa是否存在:false
      d:\aaa 文件?:false
      d:\aaa 目录?:false
    

    创建删除功能的方法

    • public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    • public boolean delete():删除由此File表示的文件或目录
    • public boolean mkdir():创建由此File表示的目录
    • public boolean mkfirs():创建由此File表示的目录,包括任何必需但不存在的父目录
      方法演示,代码如下:
    import java.io.File;
    import java.io.IOException;
    
    public class Demo04File {
      public static void main(String[] args) throws IOException {
        show01();
        show02();
        show03();
      }
    
      /*public boolean createNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
      * 创建文件的路径和名称在构造方法中给出(构造方法的参数)
      * 返回值:布尔值
      *   true:文件不存在,创建文件,返回true
      *   false:文件存在,不会创建,返回false
      * 注意:
      *   1、此方法只能创建文件,不能创建文件夹
      *   2、创建文件的路径必须存在,否则会抛出异常
      * createNewFile声明抛出了IOException,我们调用这个方法就必须处理这个异常,要么throws,要么try*/
      private static void show01() throws IOException {
        File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\1.txt");
        boolean newFile = file.createNewFile();
        System.out.println("newFile:" + newFile);
        File file1 = new File("demo01File\\2.txt");
        System.out.println(file1.createNewFile());
        File file2 = new File("demo01File\\新建文件夹");
        System.out.println(file2.createNewFile());
        File file3 = new File("demo01Fil\\新建文件夹");
        System.out.println(file3.createNewFile());
      }
    
      /*public boolean mkdir():创建单级空文件夹
      * public boolean mkdirs():既可以创建单级空文件夹,也可以创建多级空文件夹
      * 创建空文件夹的路径和名称在构造方法中给出(构造方法的参数)
      * 返回值:布尔值
      *   true:文件夹不存在,创建文件夹,返回true
      *   false:文件夹存在,不会创建,返回false
      * 注意:
      *   1、此方法只能创建文件夹,不能创建文件*/
      private static void show02() {
        // 创建单级空文件夹
        File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\aaa");
        System.out.println(file.mkdir());
        // 创建多级空文件夹
        File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\bbb\\ccc\\ddd");
        System.out.println(file1.mkdirs());
        // 看类型不看名称
        System.out.println(new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\abs.txt").mkdir());
        // 路径不存在 不抛异常 不会创建
        System.out.println(new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01Fi\\ccc.txt").mkdir());
      }
    
      /*public boolean delete():删除由此File表示的文件或目录。
      * 此方法,可以删除构造方法路径中给出的文件/文件夹
      * 返回值:布尔值
      *   true:文件/文件夹删除成功
      *   false:文件夹中有内容,不会删除;构造方法中路径不存在
      * 注意:delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎*/
      private static void show03() {
        // 删除文件
        File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\1.txt");
        System.out.println(file.delete());
        // 删除文件夹
        File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\aaa");
        System.out.println(file1.delete());
        // 文件夹中有内容
        File file2 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\bbb\\ccc\\ddd");
        System.out.println(file2.delete());
        // 路径不存在
        File file3 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\b");
        System.out.println(file3.delete());
      }
    }
    

    目录的遍历

    • public String[] list[]:返回一个String数组,表示该File目录中的所有子文件或目录。
    • public File[] listFiles:返回一个File数组,表示该File目录中的所有子文件或目录
    import java.io.File;
    
    public class Demo05File {
      public static void main(String[] args) {
        show02();
        show01();
      }
    
      /*public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录
      * 遍历构造方法中给出的目录,会获取目录中所有文件/文件夹的名称,把获取到的多个名称储存到一个String类型的数组中*/
      private static void show01() {
        // 遍历文件夹 隐藏的文件/文件夹也能被遍历
        File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File");
        String[] list = file.list();
        for (int i = 0; i < list.length; i++) {
          System.out.println(list[i]);
        }
        // 遍历文件 抛空指针异常
        File file1 = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File\\Demo01File.java");
        String[] list1 = file1.list();
        for (int i = 0; i < list1.length; i++) {
          System.out.println(list1[i]); // NullPointerException
        }
      }
    
      /*public File[] listFiles():返回一个File数组,表示该File目录中的所有子文件或目录*/
      private static void show02() {
        // 遍历文件夹 隐藏的文件/文件夹也能被遍历
        File file = new File("D:\\Study\\src\\com\\itZhao\\demo02FileClassAndRecursion\\demo01File");
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
          System.out.println(files[i]);
        }
      }
    }
    

    注意:
    list方法和listFiles方法遍历的是构造方法中给出的目录
    如果构造方法中给出的目录的路径不存在,会抛出空指针异常
    如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

    相关文章

      网友评论

          本文标题:Java_File类

          本文链接:https://www.haomeiwen.com/subject/awfaultx.html