在 Java 中将文本附加到另外文本文件

Mohammad Irfan 2023年10月12日
  1. 使用 Java 中的 FileOutputStream 类将文本附加到文本文件
  2. 使用 Java 中的 FileWriter 类将文本附加到文本文件
  3. 使用 Java 中的 BufferedWriter 类将文本附加到文本文件
  4. 使用 Java 中的 Files 类将文本附加到文本文件
  5. 在 Java 中将文本附加到文本文件
在 Java 中将文本附加到另外文本文件

本教程介绍了如何在 Java 中向一个现有的文本文件追加文本。我们还列出了一些示例代码以更好地指导你。

读取和写入是你在处理文件时可以执行的两项最基本的操作。在 Java 中有多种方法可以将数据写入或附加到文件中。在本文中,我们将了解附加到文本文件的四种不同方式。

使用 Java 中的 FileOutputStream 类将文本附加到文本文件

FileOutputStream 类用于将二进制数据写入文件。它主要用于 intfloat 等原始数据类型,但它也可用于编写面向字符的数据。

字符串在写入之前首先需要转换为字节数组;为此,你可以使用 getBytes() 方法。我们还需要将 true 作为第二个参数传递给它的构造函数。第二个参数用于布尔追加标志,它的完成表明我们正在尝试追加到现有文件。

如果它被忽略,那么 FileOutputStream 类将覆盖文件的内容。如果文件不在上述位置,它将创建一个新文件。

这是一个示例,我们尝试将句子 The quick brown fox jumps over the lazy dog 附加到现有文件中。\r\n 用于在新行的开头插入文本。

import java.io.FileOutputStream;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileOutputStream f = new FileOutputStream(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes(); // converting string into byte array
      f.write(byteArr);
      f.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 FileWriter 类将文本附加到文本文件

Java FileWriter 类旨在将字符流写入文件。我们可以使用它来将字符或字符串附加到现有文件或新文件中。如果该文件不存在于上述路径中,则会创建一个新文件,并将数据写入此新文件。

与之前的 FileOutputStream 类不同,我们不需要在写入之前将字符串转换为字节。但是,我们还需要将 true 作为第二个参数传递给 FileWriter 构造函数,这表明我们正在尝试附加到现有文件。

如果省略,它将覆盖文件的现有内容。下面的代码演示了如何使用 FileWriter 向现有文件追加一行。

import java.io.FileWriter;
public class SimpleTesting {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      fw.write(lineToAppend);
      fw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 BufferedWriter 类将文本附加到文本文件

FileWriter 类通常由其他编写器包装,例如 BufferedWriter。完成此过程是因为 BufferedWriterFileWriter 高效得多。

当我们有多个写操作时,BufferedWriterFileWriter 更受欢迎。它使用内部缓冲存储器来存储必须附加到文件中的数据。当此缓冲区已满,或者我们不再有任何其他内容要附加时,BufferedWriter 将写入实际文件。

它将大块数据从其缓冲区写入文件,而不是频繁写入;他导致较少的系统调用。因此,它比普通的 FileWriter 高效得多。

但是如果我们只有一个写操作,那么 BufferedWriter 会在写过程中添加另一个步骤。所以,最好只使用 FileWriter

要使用 BufferedWriter,我们首先需要一个 FileWriter 对象,我们将把它传递给 BufferedWriter 的构造函数。确保对附加标志使用 true

以下代码演示了 BufferedWriter 在 Java 中的工作方式。

import java.io.BufferedWriter;
import java.io.FileWriter;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      BufferedWriter bw = new BufferedWriter(fw);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      bw.write(lineToAppend);
      bw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

使用 Java 中的 Files 类将文本附加到文本文件

Files 实用程序类是在 Java 7 中添加的,它提供了另一种将数据写入文件的方法;我们使用 Files.write() 方法来做到这一点。此方法需要文件路径,还需要附加字符串的字节数组。

我们还需要指定 StandardOpenOption.APPEND 将文本附加到现有文件。确保文件存在于给定的路径中;否则,它将返回一个 NoSuchFileException

如果我们必须多次写入同一个文件,这种方法不是首选,因为该文件也会被多次打开和关闭,从而降低整体性能。

下面的代码演示了 Files.write() 方法如何在 Java I/O 中工作。

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class Main {
  public static void main(String args[]) {
    try {
      String file = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes();
      Files.write(Paths.get(file), byteArr, StandardOpenOption.APPEND);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

在 Java 中将文本附加到文本文件

Java 提供了多种文件处理选项。我们可以使用 FileOutputStreamFileWriterBufferedWriterFiles 实用程序类将数据附加到文件中。

对于 FileOutputStreamFiles 实用程序类,我们首先需要将字符串转换为字节数组,然后将其传递给 write() 方法。

当我们必须多次将少量数据写入同一个文件时,首选 BufferedWriter。另一方面,FileWriterFiles 实用程序类将为大量写入进行多个系统调用;这会降低它们的整体性能。

相关文章 - Java File

相关文章 - Java IO