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

Mohammad Irfan 2023年1月30日 2021年10月2日
  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.FileWriter;
import java.io.BufferedWriter;
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