Java 将数据附加到文件
Contents
1. 简介
在这个快速教程中,我们将了解如何使用 Java 将数据附加到文件的内容中——通过几种简单的方式。 让我们从如何使用核心 Java 的FileWriter 开始。
2. 使用FileWriter
这是一个简单的测试——读取现有文件,附加一些文本,然后确保正确附加:
@Test
public void whenAppendToFileUsingFileWriter_thenCorrect()
throws IOException {
FileWriter fw = new FileWriter(fileName, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Spain");
bw.newLine();
bw.close();
assertThat(getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
请注意,如果我们想将数据附加到现有文件, FileWriter的构造函数接受boolean标记。
如果我们将其设置为false,则现有内容将被替换。
3. 使用FileOutputStream
接下来——让我们看看如何使用FileOutputStream执行相同的操作:
@Test
public void whenAppendToFileUsingFileOutputStream_thenCorrect()
throws Exception {
FileOutputStream fos = new FileOutputStream(fileName, true);
fos.write("Spain\r\n".getBytes());
fos.close();
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
同样,FileOutputStream构造函数接受一个布尔值,该布尔值应设置为 true 以标记我们要将数据附加到现有文件。
4. 使用java.nio.file
接下来——我们还可以使用java.nio.file中的功能将内容附加到文件中——这是在 JDK 7 中引入的:
@Test
public void whenAppendToFileUsingFiles_thenCorrect()
throws IOException {
String contentToAppend = "Spain\r\n";
Files.write(
Paths.get(fileName),
contentToAppend.getBytes(),
StandardOpenOption.APPEND);
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
5. 使用Guava
要开始使用 Guava,我们需要将它的依赖项添加到我们的pom.xml中:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
现在,让我们看看如何开始使用 Guava 将内容附加到现有文件:
@Test
public void whenAppendToFileUsingFileWriter_thenCorrect()
throws IOException {
File file = new File(fileName);
CharSink chs = Files.asCharSink(
file, Charsets.UTF_8, FileWriteMode.APPEND);
chs.write("Spain\r\n");
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}
6. 使用 Apache Commons IO FileUtils
最后——让我们看看如何使用 Apache Commons IO FileUtils将内容附加到现有文件。 首先,让我们将 Apache Commons IO 依赖项添加到我们的pom.xml中:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
现在,让我们看一个演示使用FileUtils将内容附加到现有文件的快速示例:
@Test
public void whenAppendToFileUsingFiles_thenCorrect()
throws IOException {
File file = new File(fileName);
FileUtils.writeStringToFile(
file, "Spain\r\n", StandardCharsets.UTF_8, true);
assertThat(StreamUtils.getStringFromInputStream(
new FileInputStream(fileName)))
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
}