Java FileWriter

2025/04/06

1. 概述

在本教程中,我们将学习和理解java.io包中的FileWriter类。

2. FileWriter

FileWriter是专门用于写入字符文件的OutputStreamWriter,它不公开任何新操作,但使用从OutputStreamWriter和Writer类继承的操作。

在Java 11之前,FileWriter使用默认字符编码和默认字节缓冲区大小。但是,Java 11引入了4个接收Charset的新构造函数,从而允许用户指定Charset。不幸的是,我们仍然无法修改字节缓冲区大小,它被设置为8192。

2.1 实例化FileWriter

如果我们使用Java 11之前的Java版本,则FileWriter类中有5个构造函数。

让我们看一下各种构造函数:

public FileWriter(String fileName) throws IOException {
    super(new FileOutputStream(fileName));
}

public FileWriter(String fileName, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append));
}

public FileWriter(File file) throws IOException {
    super(new FileOutputStream(file));
}

public FileWriter(File file, boolean append) throws IOException {
    super(new FileOutputStream(file, append));
}

public FileWriter(FileDescriptor fd) {
    super(new FileOutputStream(fd));
}

Java 11引入了4个额外的构造函数:

public FileWriter(String fileName, Charset charset) throws IOException {
    super(new FileOutputStream(fileName), charset);
}

public FileWriter(String fileName, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(fileName, append), charset);
}

public FileWriter(File file, Charset charset) throws IOException {
    super(new FileOutputStream(file), charset);
}

public FileWriter(File file, Charset charset, boolean append) throws IOException {
    super(new FileOutputStream(file, append), charset);
}

2.2 将字符串写入文件

现在让我们使用FileWriter构造函数之一来创建FileWriter的实例,然后写入文件:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt")) {
    fileWriter.write("Hello Folks!");
}

我们使用了接收文件名的FileWriter的单参数构造函数,然后我们使用从Writer类继承的write(String str)操作。由于FileWriter是AutoCloseable,我们使用了try-with-resources,这样我们就不必显式关闭FileWriter

执行上述代码后,字符串将被写入指定的文件:

Hello Folks!

FileWriter不保证FileWriterTest.txt文件是否可用或是否已创建,它依赖于底层平台

我们还必须注意,某些平台可能只允许一个FileWriter实例打开文件。在这种情况下,如果涉及的文件已经打开,则FileWriter类的其他构造函数将失败。

2.3 将字符串追加到文件

我们经常需要将数据追加到文件的现有内容中,现在让我们看一个支持追加的FileWriter的例子:

try (FileWriter fileWriter = new FileWriter("src/test/resources/FileWriterTest.txt", true)) {
    fileWriter.write("Hello Folks Again!");
}

如我们所见,我们使用了接收文件名和Boolean标志append的双参数构造函数,将标志append传递为true创建一个FileWriter,它允许我们将文本附加到文件的现有内容中

执行代码时,我们会将String附加到指定文件的现有内容:

Hello Folks!Hello Folks Again!

3. 总结

在本文中,我们了解了便利类FileWriter以及创建FileWriter的几种方法,然后我们用它来将数据写入文件。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章