在 Java 中将文本附加到另外文本文件
-
使用 Java 中的
FileOutputStream类将文本附加到文本文件 -
使用 Java 中的
FileWriter类将文本附加到文本文件 -
使用 Java 中的
BufferedWriter类将文本附加到文本文件 -
使用 Java 中的
Files类将文本附加到文本文件 - 在 Java 中将文本附加到文本文件
本教程介绍了如何在 Java 中向一个现有的文本文件追加文本。我们还列出了一些示例代码以更好地指导你。
读取和写入是你在处理文件时可以执行的两项最基本的操作。在 Java 中有多种方法可以将数据写入或附加到文件中。在本文中,我们将了解附加到文本文件的四种不同方式。
使用 Java 中的 FileOutputStream 类将文本附加到文本文件
FileOutputStream 类用于将二进制数据写入文件。它主要用于 int 或 float 等原始数据类型,但它也可用于编写面向字符的数据。
字符串在写入之前首先需要转换为字节数组;为此,你可以使用 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。完成此过程是因为 BufferedWriter 比 FileWriter 高效得多。
当我们有多个写操作时,BufferedWriter 比 FileWriter 更受欢迎。它使用内部缓冲存储器来存储必须附加到文件中的数据。当此缓冲区已满,或者我们不再有任何其他内容要附加时,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 提供了多种文件处理选项。我们可以使用 FileOutputStream、FileWriter、BufferedWriter 或 Files 实用程序类将数据附加到文件中。
对于 FileOutputStream 和 Files 实用程序类,我们首先需要将字符串转换为字节数组,然后将其传递给 write() 方法。
当我们必须多次将少量数据写入同一个文件时,首选 BufferedWriter。另一方面,FileWriter 和 Files 实用程序类将为大量写入进行多个系统调用;这会降低它们的整体性能。