:::tips

概述

  • java.io.File类可以表示文件和文件夹,主要用于文件和文件夹的创建、查找和删除等操作 :::

    file类构造方法

    :::tips

    java.io.File类是通过路径名表示文件和文件夹

  • File(String path) 根据path路径创建File对象,表示文件夹或者文件

  • File(String parent, String child) 根据父路径和子路径创建File对象,表示文件夹或者文件
  • File(File parent, String child) 使用File对象表示父路径,字符串表示子路径,创建新的File对象 :::

    File类创建功能

    :::tips

    File类可以创建文件和文件夹

  • public boolean createNewFile() 创建新文件, 创建成功返回true。如果文件已存在,则无法创建,返回false

  • public boolean mkdir() 创建单级文件夹, 创建成功返回true,如果文件夹已存在,则无法创建,返回false(如果父目录不存在,也无法创建)
  • public boolean mkdirs() 创建一个多级文件夹, 创建成功返回true。如果文件夹已存在,则无法创建,返回false(如果父目录不存在,会一并创建) :::

    File类删除功能

    :::tips

    File类可以删除文件和文件夹

  • public boolean delete()删除该File对象表示的文件或文件夹

    删除目录时的注意事项:

  • delete方法直接删除不走回收站

  • 如果删除的是一个文件,直接删除
  • 如果删除的是一个文件夹,如果文件夹中有内容,则无法删除 :::

    File类判断和获取功能

    :::tips

  • public boolean isDirectory() 判断是否是文件夹,如果是返回true

  • public boolean isFile() 判断是否是文件,如果是返回true
  • public boolean exists() 判断文件或文件夹是否存在,存在返回true
  • public String getAbsolutePath() 获取File对象的绝对路径
  • public String getPath() 获取创建对象时给出的路径(构造方法的参数路径)
  • public String getName() 获取文件或文件夹名字(路径中最后一个斜杠后面的内容)
  • public long length() 获取文件的大小, 返回该文件的字节数。(对文件夹无效) :::

    File类遍历文件夹

    :::tips

    File类的listFiles()可以列出文件夹中的所有内容

  • public File[] listFiles() 返回此抽象路径名表示的目录中的文件和文件夹的File对象数组

    注意

  • File对象只有代表文件夹,才能调用listFiles()

  • 如果File对象代表文件,调用listFiles() 得到的结果是null :::

    1. /*
    2. File类的创建功能:
    3. boolean createNewFile() 创建新文件, 创建成功返回true,如果文件已存在,则无法创建,返回false。
    4. boolean mkdir() 创建单级文件夹, 创建成功返回true.
    5. 如果文件夹已存在,则无法创建,返回false。(如果父目录不存在,也无法创建)
    6. (其实就是创建路径的最后一层)
    7. boolean mkdirs() 创建一个多级文件夹, 创建成功返回true。
    8. 如果文件夹已存在,则无法创建,返回false。(如果父目录不存在,会一并创建)
    9. 注意:
    10. Windows中文件名不区分大小写。
    11. Java中路径斜杠支持\\ 或者 // 或者 / 写法。
    12. */
    13. public class Demo01File {
    14. public static void main(String[] args) throws IOException {
    15. //在File文件夹下创建hello.txt文件
    16. File f1 = new File("E:\\File\\hello.txt");
    17. //如果文件不存在就直接创建,存在就不创建
    18. boolean newFile = f1.createNewFile();
    19. System.out.println(newFile);
    20. //在File文件夹下创建a文件夹
    21. File f2 = new File("E:\\File\\a");
    22. //创建最后一级,(需要包装最后一级之前文件夹都存在才能成功)
    23. boolean mkdir = f2.mkdir();
    24. System.out.println(mkdir);
    25. //在File文件夹下创建多级文件夹
    26. File f3 = new File("E:\\File\\aa\\bb");
    27. boolean mkdirs = f3.mkdirs();
    28. System.out.println(mkdirs);
    29. }
    30. }
    1. /*
    2. File删除功能:
    3. boolean delete() 删除该File对象表示的文件或文件夹。
    4. 注意:
    5. 1.删除不走回收站
    6. 2.如果删除的是文件,直接删除。
    7. 3.如果删除的是文件夹,文件夹如果不为空,则无法删除。
    8. */
    9. public class Demo02File {
    10. public static void main(String[] args) {
    11. //删除文件夹,需为空文件夹才能删除成功
    12. File f1 = new File("E:\\File\\aa\\bb");
    13. System.out.println("f1.delete() = " + f1.delete());
    14. //删除文件
    15. File f2 = new File("E:\\File\\hello.txt");
    16. System.out.println("f2.delete() = " + f2.delete());
    17. }
    18. }
    /*
    File类的判断功能:
          boolean isDirectory() 判断是否是文件夹,如果是返回true
          boolean isFile() 判断是否是文件,如果是返回true
          boolean exists() 判断文件或文件夹是否存在,存在返回true
    */
    public class Demo03File {
      public static void main(String[] args) {
          //文件夹
          File f1 = new File("E:\\File\\a");
          System.out.println("f1.isDirectory() = " + f1.isDirectory());
          //文件
          File f2 = new File("E:\\File\\hello.txt");
          System.out.println("f2.isFile() = " + f2.isFile());
          //判断文件夹或者文件是否存在
          System.out.println(f1.exists());
      }
    }
    
    /*
    File类的获取功能:
          String getAbsolutePath() 获取File对象的绝对路径(完整路径)
          String getPath() 获取创建File对象时给出的路径
          String getName() 获取文件或文件夹名字(路径中最后一个斜杠后面的内容)
          long length() 获取文件的大小,返回文件的字节数。(对文件夹无效)
    */
    public class Demo04File {
      public static void main(String[] args) {
          File f1 = new File("File\\a");
    
          System.out.println("f1.getAbsoluteFile() = " + f1.getAbsoluteFile());
          System.out.println("f1.getPath() = " + f1.getPath());
          System.out.println("f1.getName() = " + f1.getName());
    
          File f2 = new File("D:\\javacode\\JavaSEReinforce\\Day10FileIO\\File\\a\\Hello.txt");
          System.out.println("f2.length() = " + f2.length());
      }
    }
    
    /*
      绝对路径与相对路径
      绝对路径:从盘符开始
      相对路径:IDEA中从项目路径开始
    */
    public class Demo05File {
      public static void main(String[] args) {
          //绝对路径:直接盘符开头,完整路径
          File f1 = new File("D:\\javacode\\JavaSEReinforce\\Day10FileIO\\File\\a");
          //相对路径,直接文件夹或者文件名开头
          //在idea中如果使用相对路径会默认加上工程的路径
          File f2 = new File("File\\a");
    
          System.out.println("f1.getAbsolutePath() = " + f1.getAbsolutePath());
          System.out.println("f2.getAbsolutePath() = " + f2.getAbsolutePath());
      }
    }
    
    public class Demo01 {
      public static void main(String[] args) {
          File file = new File("E:\\DemoClass");
          findAllJava(file);
      }
    
      public static void findAllJava(File file) {
          //列出文件夹的所有内容
          File[] list = file.listFiles();
          //循环遍历
          for (File f : list) {
              //如果是文件
              if (f.isFile()) {
                  //获取文件名
                  String name = f.getName();
                  //如果文件名后缀是.java
                  if (name.endsWith(".java")) {
                      //输出
                      System.out.println(name);
                  }
              } else {
                  //将文件夹递归
                  findAllJava(f);
              }
          }
      }
    }