【JavaSE】Java基础语法(三十三):File 一文详解

简介: 1. File类概述和构造方法File类介绍它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也

1. File类概述和构造方法

  • File类介绍
  • 它是文件和目录路径名的抽象表示
  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
  • File类的构造方法

b17772803d964ed0b1c2362ae8a28625.png

示例代码

public class FileDemo01 {
  public static void main(String[] args) {
    //File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
    File f1 = new File("E:\\snow\\java.txt");
    System.out.println(f1);
    //File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例
    File f2 = new File("E:\\snow","java.txt");
    System.out.println(f2);
    //File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的File实例
    File f3 = new File("E:\\snow");
    File f4 = new File(f3,"java.txt");
    System.out.println(f4);
  }
}

2. 绝对路径和相对路径

  • 绝对路径
    是一个完整的路径,从盘符开始
  • 相对路径
    是一个简化的路径,相对当前项目下的路径

示例代码

public static void main(String[] args) {
  // 是一个完整的路径,从盘符开始
  File file1 = new File("D:\\snow\\a.txt");
  // 是一个简化的路径,从当前项目根目录开始
  File file2 = new File("a.txt");
  File file3 = new File("模块名\\a.txt");
}

3. File类创建功能【应用】

  • 方法分类

b8bf7d52450343c38943a9a616222005.png

  • 示例代码
public class FileDemo02 {
  public static void main(String[] args) throws IOException {
    //需求1:我要在E:\\snow目录下创建一个文件java.txt
    File f1 = new File("E:\\snow\\java.txt");
    System.out.println(f1.createNewFile());
    System.out.println("--------");
    //需求2:我要在E:\\snow目录下创建一个目录JavaSE
    File f2 = new File("E:\\snow\\JavaSE");
    System.out.println(f2.mkdir());
    System.out.println("--------");
    //需求3:我要在E:\\snow目录下创建一个多级目录JavaWEB\\HTML
    File f3 = new File("E:\\snow\\JavaWEB\\HTML");
    // System.out.println(f3.mkdir());
    System.out.println(f3.mkdirs());
    System.out.println("--------");
    //需求4:我要在E:\\snow目录下创建一个文件javase.txt
    File f4 = new File("E:\\snow\\javase.txt");
    // System.out.println(f4.mkdir());
    System.out.println(f4.createNewFile());
  }
}

4. File类删除功能【应用】

  • 方法分类

18102de0c06241bfb3aafc8d00843ad2.png

  • 只能删除文件或者空文件夹
  • 示例代码
public class FileDemo03 {
  public static void main(String[] args) throws IOException {
    // File f1 = new File("E:\\snow\\java.txt");
    //需求1:在当前模块目录下创建java.txt文件
    File f1 = new File("myFile\\java.txt");
    // System.out.println(f1.createNewFile());
    //需求2:删除当前模块目录下的java.txt文件
    System.out.println(f1.delete());
    System.out.println("--------");
    //需求3:在当前模块目录下创建snow目录
    File f2 = new File("myFile\\snow");
    // System.out.println(f2.mkdir());
    //需求4:删除当前模块目录下的snow目录
    System.out.println(f2.delete());
    System.out.println("--------");
    //需求5:在当前模块下创建一个目录snow,然后在该目录下创建一个文件java.txt
    File f3 = new File("myFile\\snow");
    // System.out.println(f3.mkdir());
    File f4 = new File("myFile\\snow\\java.txt");
    // System.out.println(f4.createNewFile());
    //需求6:删除当前模块下的目录snow
    System.out.println(f4.delete());
    System.out.println(f3.delete());
  }
}

5. File类判断和获取功能【应用】

  • 判断功能

4a735a79b5f74ff3a88ed962d86626ba.png获取功能

19690c5d23ea4c6eb778c79f3a8710a1.png

示例代码

public class FileDemo04 {
  public static void main(String[] args) {
    //创建一个File对象
    File f = new File("myFile\\java.txt");
    // public boolean isDirectory():测试此抽象路径名表示的File是否为目录
    // public boolean isFile():测试此抽象路径名表示的File是否为文件
    // public boolean exists():测试此抽象路径名表示的File是否存在
    System.out.println(f.isDirectory());
    System.out.println(f.isFile());
    System.out.println(f.exists());
    // public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
    // public String getPath():将此抽象路径名转换为路径名字符串
    // public String getName():返回由此抽象路径名表示的文件或目录的名称
    System.out.println(f.getAbsolutePath());
    System.out.println(f.getPath());
    System.out.println(f.getName());
    System.out.println("--------");
    // public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File
    对象数组
    File f2 = new File("E:\\snow");
    File[] fileArray = f2.listFiles();
    for(File file : fileArray) {
      // System.out.println(file);
      // System.out.println(file.getName());
      if(file.isFile()) {
        System.out.println(file.getName());
      }
    }
  }
}

6. 6File类练习一【应用】

  • 案例需求
    在当前模块下的aaa文件夹中创建一个a.txt文件
  • 实现步骤
  • 创建File对象,指向aaa文件夹
  • 判断aaa文件夹是否存在,如果不存在则创建
  • 创建File对象,指向aaa文件夹下的a.txt文件
  • 创建这个文件

代码实现

public class Test1 {
  public static void main(String[] args) throws IOException {
    //练习一:在当前模块下的aaa文件夹中创建一个a.txt文件
    /* File file = new File("filemodule\\aaa\\a.txt");
    file.createNewFile();*/
    //注意点:文件所在的文件夹必须要存在.
    //1.创建File对象,指向aaa文件夹
    File file = new File("filemodule\\aaa");
    //2.判断aaa文件夹是否存在,如果不存在则创建
    if(!file.exists()){
      //如果文件夹不存在,就创建出来
      file.mkdirs();
    }
    //3.创建File对象,指向aaa文件夹下的a.txt文件
    File newFile = new File(file,"a.txt");
    //4.创建这个文件
    newFile.createNewFile();
  }
}

7. File类练习二【应用】

  • 案例需求
    删除一个多级文件夹
  • 实现步骤

定义一个方法,接收一个File对象

遍历这个File对象,获取它下边的每个文件和文件夹对象

判断当前遍历到的File对象是文件还是文件夹

如果是文件,直接删除

如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递

参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹

代码实现

public class Test2 {
  public static void main(String[] args) {
    //练习二:删除一个多级文件夹
    //delete方法
    //只能删除文件和空文件夹.
    //如果现在要删除一个有内容的文件夹?
    //先删掉这个文件夹里面所有的内容.
    //最后再删除这个文件夹
    File src = new File("C:\\Users\\apple\\Desktop\\src");
    deleteDir(src);
  }
  //1.定义一个方法,接收一个File对象
  private static void deleteDir(File src) {
    //先删掉这个文件夹里面所有的内容.
    //递归 方法在方法体中自己调用自己.
    //注意: 可以解决所有文件夹和递归相结合的题目
    //2.遍历这个File对象,获取它下边的每个文件和文件夹对象
    File[] files = src.listFiles();
    //3.判断当前遍历到的File对象是文件还是文件夹
    for (File file : files) {
      //4.如果是文件,直接删除
      if(file.isFile()){
        file.delete();
      }else{
        //5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
        deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象
      }
    }
    //6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
    src.delete();
  }
}

相关文章
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
52 1
|
2月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
37 2
|
24天前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
37 3
|
1月前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
63 3
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
33 1
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
30 1
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
34 2
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
34 0
|
Java
java读写file
private static String encoding = "utf-8"; public static void readTxt(String filePath) throws IOException { File file = new File(filePath); if (file.
798 0