# Java `File`类

> 原文： [https://www.programiz.com/java-programming/file](https://www.programiz.com/java-programming/file)

#### 在本教程中，我们将借助示例学习 Java `File`及其各种操作。

`java.io`包的`File`类用于对文件和目录执行各种操作。

还有一个名为`java.nio`的包，可用于处理文件。 但是，在本教程中，我们将重点介绍`java.io`包。

* * *

## 文件和目录

文件是可用于存储相关信息的命名位置。 例如，

`main.java`是一个 Java 文件，其中包含有关 Java 程序的信息。

目录是文件和子目录的集合。 目录内的目录称为子目录。

* * *

## 创建一个 Java 文件对象

要创建`File`的对象，我们需要首先导入`java.io.File`包。 导入包后，就可以创建文件对象。

```java
// creates an object of File using the path 
File file = new File(String pathName); 
```

在这里，我们创建了一个名为`file`的文件对象。 该对象可用于处理文件和目录。

**注意**：在 Java 中，创建文件对象并不意味着创建文件。 相反，文件对象是文件或目录路径名的抽象表示（在括号中指定）。

* * *

## Java 文件操作方法

| 操作 | 方法 | 包 |
| --- | --- | --- |
| 创建文件 | `createNewFile()` | `java.io.File` |
| 读取文件 | `read()` | `java.io.FileReader` |
| 写入文件 | `write()` | `java.io.FileWriter` |
| 删除文件 | `delete()` | `java.io.File` |

* * *

### Java 创建文件

要创建一个新文件，我们可以使用`createNewFile()`方法。 它返回

*   `true`如果创建了新文件。
*   `false`如果文件已存在于指定位置。

### 示例：创建一个新文件

```java
// importing the File class
import java.io.File;

class Main {
  public static void main(String[] args) {

    // create a file object for the current location
    File file = new File("newFile.txt");

    try {

      // trying to create a file based on the object
      boolean value = file.createNewFile();
      if (value) {
        System.out.println("The new file is created.");
      }
      else {
        System.out.println("The file already exists.");
      }
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
} 
```

在上面的示例中，我们创建了一个名为`file`的文件对象。 文件对象与指定的文件路径链接。

```java
File file = new File("newFile.txt"); 
```

在这里，我们使用了文件对象来创建具有指定路径的新文件。

**如果当前位置**中不存在`newFile.txt`，则会创建文件并显示此消息。

```java
The new file is created. 
```

**但是，如果`newFile.txt`已经存在**，我们将看到此消息。

```java
The file already exists. 
```

* * *

### Java 读取文件

要从文件中读取数据，我们可以使用 [InputStream](/java-programming/inputstream "Java InputStream Class") 或 [Reader](/java-programming/reader "Java Reader Class") 的子类。

### 示例：使用`FileReader`读取文件

假设我们有一个名为`input.txt`的文件，其内容如下。

```java
This is a line of text inside the file. 
```

现在，让我们尝试使用 Java `FileReader`读取文件。

```java
// importing the FileReader class
import java.io.FileReader;

class Main {
  public static void main(String[] args) {

    char[] array = new char[100];
    try {
      // Creates a reader using the FileReader
      FileReader input = new FileReader("input.txt");

      // Reads characters
      input.read(array);
      System.out.println("Data in the file:");
      System.out.println(array);

      // Closes the reader
      input.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
} 
```

**输出**

```java
Data in the file:
This is a line of text inside the file. 
```

在上面的示例中，我们使用了创建`FileReader`的名为`input`的对象。 现在，它已与`input.txt`文件链接。

```java
FileReader input = new FileReader("input.txt"); 
```

要从`input.txt`文件读取数据，我们使用了`FileReader`的`read()`方法。

* * *

### Java 写入文件

要将数据写入文件，我们可以使用 [OutputStream](/java-programming/outputstream "Java OutputStream Class") 或 [Writer](/java-programming/writer "Java Writer Class") 的子类。

### 示例：使用`FileWriter`写入文件

```java
// importing the FileWriter class
import java.io.FileWriter;

 class Main {
   public static void main(String args[]) {

     String data = "This is the data in the output file";
     try {
       // Creates a Writer using FileWriter
       FileWriter output = new FileWriter("output.txt");

       // Writes string to the file
       output.write(data);
       System.out.println("Data is written to the file.");

       // Closes the writer
       output.close();
     }
     catch (Exception e) {
       e.getStackTrace();
     }
  }
} 
```

**输出**

```java
Data is written to the file. 
```

在上面的示例中，我们使用`FileWriter`类创建了一个`writer`。 写入器与`output.txt`文件链接。

```java
FileWriter output = new FileWriter("output.txt"); 
```

要将数据写入文件，我们使用了`write()`方法`.`

在这里，当我们运行程序时，`output.txt`文件填充了以下内容。

```java
This is the data in the output file. 
```

* * *

### Java 删除文件

我们可以使用`File`类的`delete()`方法删除指定的文件或目录。 它返回

*   `true`如果文件被删除。
*   `false`如果文件不存在。

**注意**：我们只能删除空目录。

### 示例：删除文件

```java
import java.io.File;

class Main {
  public static void main(String[] args) {

    // creates a file object
    File file = new File("file.txt");

    // deletes the file
    boolean value = file.delete();
    if(value) {
      System.out.println("The File is deleted.");
    }
    else {
      System.out.println("The File is not deleted.");
    }
  }
} 
```

**输出**：

```java
The File is deleted. 
```

在上面的示例中，我们创建了一个名为`file`的`File`对象。 该文件现在包含有关指定文件的信息。

```java
File file = new File("file.txt"); 
```

在这里，我们已使用`delete()`方法删除该对象指定的文件。

**相关示例**

*   [Java 创建目录](/java-programming/examples/create-directory "Java Program to create directories")
*   [Java 重命名文件](/java-programming/examples/rename-file "Java Program to rename file")
*   [Java 列出目录中的文件](/java-programming/examples/list-files "Java Program to list files in a directory")
*   [Java 复制文件](/java-programming/examples/copy-file "Java Program to copy file")