Java FileWriter 类详细介绍以及用法详解

在本教程中,我们将通过示例了解 Java FileWriter 类以及相关用法。

在本教程中,我们将通过示例了解 Java FileWriter 类以及相关用法。

java.io 包的 FileWriter 类可用于将数据(以字符为单位)写入文件。

FileWriter 类它扩展了 OutputStreamWriter 类。

FileWriter 是 OutputStreamWriter 的子类,OutputStreamWriter 是 Java Writer 的子类。
Java FileWriter 类

在您了解更多信息之前 FileWriter ,请务必了解 Java 文件处理

创建 FileWriter

我们使用 FileWriter 的构造方法创建对象,需要通过构造方法的参数指定要关联的文件路径或文件对象。如下:

  1. 使用文件路径

    FileWriter output = new FileWriter(String name);
    

    在这里,我们创建了一个 FileWriter 对象,并通过文件路径与文件关联起来。

  2. 使用 File 对象

    FileWriter output = new FileWriter(File fileObj);
    

    在这里,我们创建了一个 FileWriter 对象,并通过 File 对象与文件关联起来。

在上面的示例中,都是通过默认字符编码处理文件内容的。但是,从 Java 11 开始,我们可以指定编码了。如下:

FileWriter output = new FileWriter(String file, Charset cs);

在这里,我们使用了 Charset 类来指定 FileWriter 的字符编码。

FileWriter 的方法

FileWriter 类完全实现了 Writer 类定义的所有抽象方法。

write() 方法

  • write(int char) - 写入一个字符
  • write(char[] array) - 将指定数组中的字符写入输出字符流
  • write(String data) - 将指定的字符串写入输出字符流

示例:使用 FileWriter 将数据写入文件

import java.io.FileWriter;

public class Main {

  public static void main(String args[]) {
    String data = "This is the data in the output file";

    try {
      FileWriter output = new FileWriter("output.txt");

      output.write(data);
      output.close();
    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

在上面的例子中,我们使用文件路径输出流创建了一个 FileWriter,与 output.txt 文件关联起来。如下:

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

我们使用了 write() 方法将数据写入文件。当我们成功运行程序后, output.txt 文件中的内容如下:

This is a line of text inside the file.

getEncoding() 方法

getEncoding() 方法获取用于将数据写入输出流的编码。例如,

import java.io.FileWriter;
import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) {
    String file = "output.txt";

    try {
      FileWriter output1 = new FileWriter(file);
      FileWriter output2 = new FileWriter(file, StandardCharsets.ISO_8859_1);

      System.out.println("Character encoding of output1: " + output1.getEncoding());
      System.out.println("Character encoding of output2: " + output2.getEncoding());

      output1.close();
      output2.close();
    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

输出

Character encoding of output1: UTF8
Character encoding of output2: ISO_8859_1

在上面的例子中,我们创建了 2 个 FileWriter 对象:

  • output1 不指定字符编码。因此,getEncoding() 方法返回系统默认字符编码名称。
  • output2 指定字符编码 ISO_8859_1。因此,getEncoding() 方法返回指定的字符编码。

FileWriter 的其他方法

方法 描述
flush() 强制将所有数据写入相应的目的地
append() 将指定字符插入当前 Writer