LongJL 发表于 2021-7-17 21:12

【自学笔记】 Java基础 - File

# File

## File类
- 在读写数据时告诉虚拟机要操作的(文件/文件夹)在哪
- 对(文件/文件夹)本身进行操作。包括创建和删除等

### 概述
- 它是文件和目录路径名的抽象表示
- 文件和目录可以通过File封装成对象
- File封装的对象仅仅是一个路径名。它可以是存在的,也可以是不存在的

### 构造方法
- `File(String pathname)` : 通过将给定的路径名字符串转换为抽象路径名来创建新的`File`实例
- `File(String parent, String child)`从父路径名字符串和子路径名字符串创建新的`File`实例
- `File(File parent, String child)` 从父抽象路径名和子路径名字符串创建新的`File`实例


```Java
public class FileDemo1 {
    public static void main(String[] args) {
//      extracted();
//      extracted1();
//      extracted2();
    }

    private static void extracted2() {
      // `File(File parent, String child)` 从父抽象路径名和子路径名字符串创建新的`File`实例
      File file1 = new File("D:\\新建文件夹 (2)");
      String path="a.txt";
      File file = new File(file1,path);
      System.out.println(file);
    }

    private static void extracted1() {
      // `File(String parent, String child)`从父路径名字符串和子路径名字符串创建新的`File`实例
      String path1 = "D:\\新建文件夹 (2)";
      String path2 = "a.txt";
      File file = new File(path1,path2);
      System.out.println(file);
    }

    private static void extracted() {
      // `File(String pathname)` : 通过将给定的路径名字符串转换为抽象路径名来创建新的`File`实例
      String path = "D:\\新建文件夹 (2)\\a.txt";
      File file = new File(path);
    }
}

```

### 绝对路径和相对路径
#### 绝对路径
从盘符开始
`File file1 = new File("D:\\新建文件夹 (2)\\a.txt")`
#### 相对路径
相对当前目录下的路径
```Java
File file2 = new File("a.txt");
File file3 = new File("模块名\\a.txt");
```
### File 类创建功能
- public boolean createNewFile(): 创建一 个新的空的文件
        注:
                1.如果文件存储,返回false。如果不存在创建成功,返回true,只能创建文件无论有无后缀名
                2.文件所在的文件夹,必须要存在
- public boolean mkdir(): 创建一个单级文件夹
        注:只能创建单级文件夹,不管调用者有没有后缀名,只能创建单级文件夹
- public boolean mkdirs(): 创建一个多级文件夹
        注:只能创建单级文件夹,也可以创建多级文件夹,不管调用者有没有后缀名,只能创建单级文件夹

### File 类删除功能
- `public boolean delete()`:删除由此抽象路径名表示的文件或目录
        注:
                1.删除不走回收站
                2.如果删除的是文件,那么直接删除,如果删除的是文件夹只能删除空文件夹
                3.如果要删除一个有内容的文件夹,只能先进入到这个文件夹,把里面的内容全部删除文件,才能再次删除这个文件夹。


### File 类判断和获取功能
public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
public boolean isFile() 测试此抽象路径名表示的File是否为文件
public boolean exists() 测试此抽象路径名表态的File是否存在
public String getName() 返回由此抽象路径名表示的文件或目录的名称
        注:
                1.如果调用的是文件,那么获取的是文件名和后缀名
```Java
public class FileDemo4 {
    public static void main(String[] args) {
      // public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
      // public boolean isFile() 测试此抽象路径名表示的File是否为文件
      // public boolean exists() 测试此抽象路径名表态的File是否存在
      // public String getName() 返回由此抽象路径名表示的文件或目录的名称

      File file = new File("D:\\FileTest\\a.txt");
      boolean file1 = file.isFile();
      boolean directory = file.isDirectory();
      boolean exists = file.exists();
      System.out.println(file1);
      System.out.println(directory);
      System.out.println(exists);
      System.out.println(file.getName());
    }
}

```
### File 类高级获取功能
- public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组       
        注:包括隐藏文件和隐藏文件夹都可以获取

```Java
public class FileDemo5 {
    public static void main(String[] args) {
      File file= new File("D:\\");
      File[] files = file.listFiles();
      for (File file1 : files) {
            System.out.println(file1);
      }
    }
}
```
#### 注意事项
- 当调用者是一个文件时,返回一个null
- 当调用者是一个空文件夹时,返回长度为0的数组
- 当调用者是一个有内容的文件夹时,获取这个文件夹内的所有File对象存入数组
- 当调用者是一个由权限才能进入的文件夹时,返回一个null


## IO流
- 可以将数据从本地文件读取出来
- 可以将数据从内存保存到本地文件

softking 发表于 2021-7-17 23:04

这个不太容易理解,小白一个      
页: [1]
查看完整版本: 【自学笔记】 Java基础 - File