原文:http://zetcode.com/articles/javaappendtofile/

Java 附加到文件教程显示了如何用 Java 附加到文件。 我们使用FileWriterFileOutputStreamFilesRandomAccessFile,Google Guava 和 Apache Commons IO。

附加到文件通常在日志记录中使用。

在示例中,我们将文本附加到文件中。

towns.txt

  1. Bratislava
  2. Moldava
  3. Košice
  4. Trenčín
  5. Prešov
  6. Žilina

我们使用此文本文件。 它位于src/main/resources目录中。

Java 使用FileWriter附加到文件

FileWriter类用于编写字符流。 FileWriter采用可选的第二个参数:append。 如果设置为true,则数据将被写入文件末尾。

JavaAppendFileFileWriter.java

  1. package com.zetcode;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. public class JavaAppendFileFileWriter {
  5. public static void main(String[] args) throws IOException {
  6. String fileName = "src/main/resources/towns.txt";
  7. try (FileWriter fw = new FileWriter(fileName, true)) {
  8. fw.append("Žilina\n");
  9. }
  10. }
  11. }

本示例使用FileWriter将数据附加到文件中。

Java 用FileOutputStream附加到文件

FileOutputStream是用于将数据写入FileFileDescriptor的输出流。 它带有一个可选的第二个参数,该参数确定是否将数据附加到文件中。

JavaAppendFileFileOutputStream.java

  1. package com.zetcode;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. public class JavaAppendFileFileOutputStream {
  6. public static void main(String[] args) throws FileNotFoundException, IOException {
  7. String fileName = "src/main/resources/towns.txt";
  8. byte[] tb = "Žilina\n".getBytes();
  9. try (FileOutputStream fos = new FileOutputStream(fileName, true)) {
  10. fos.write(tb);
  11. }
  12. }
  13. }

本示例使用FileOutputStream将数据附加到文件中。

Java 使用Files附加到文件

Java 7 引入了java.nio.file.Files类,该类可用于轻松地将数据附加到文件中。

JavaAppendFileFiles.java

  1. package com.zetcode;
  2. import java.io.IOException;
  3. import java.nio.file.Files;
  4. import java.nio.file.Paths;
  5. import java.nio.file.StandardOpenOption;
  6. public class JavaAppendFileFiles {
  7. public static void main(String[] args) throws IOException {
  8. String fileName = "src/main/resources/towns.txt";
  9. byte[] tb = "Žilina\n".getBytes();
  10. Files.write(Paths.get(fileName), tb, StandardOpenOption.APPEND);
  11. }
  12. }

本示例将数据附加Files

  1. Files.write(Paths.get(fileName), tb, StandardOpenOption.APPEND);

Files.write()的第三个参数表明如何打开文件进行写入。 使用StandardOpenOption.APPEND可以打开文件进行附加。

Java 用RandomAccessFile附加到文件

RandomAccessFile用于读取和写入随机访问文件。

JavaAppendFileRandomAccessFile.java

  1. package com.zetcode;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;
  5. public class JavaAppendFileRandomAccessFile {
  6. public static void main(String[] args) throws IOException {
  7. String fileName = "src/main/resources/towns.txt";
  8. File file = new File(fileName);
  9. try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
  10. long length = raf.length();
  11. raf.setLength(length + 1);
  12. raf.seek(raf.length());
  13. raf.writeBytes("Žilina\n");
  14. }
  15. }
  16. }

在此示例中,我们将数据附加RandomAccessFile

Java 用 Guava 附加到文件

我们可以使用 Guava 库将其附加到文件中。

  1. <dependency>
  2. <groupId>com.google.guava</groupId>
  3. <artifactId>guava</artifactId>
  4. <version>22.0</version>
  5. </dependency>

我们需要这种 Guava 依赖。

JavaAppendFileGuava.java

  1. package com.zetcode;
  2. import com.google.common.base.Charsets;
  3. import com.google.common.io.CharSink;
  4. import com.google.common.io.FileWriteMode;
  5. import com.google.common.io.Files;
  6. import java.io.File;
  7. import java.io.IOException;
  8. public class JavaAppendFileGuava {
  9. public static void main(String[] args) throws IOException {
  10. String fileName = "src/main/resources/towns.txt";
  11. File file = new File(fileName);
  12. CharSink chs = Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND);
  13. chs.write("Žilina\n");
  14. }
  15. }

在示例中,我们使用 Guava 的CharSink类将其附加到文件中。

  1. CharSink chs = Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND);

Files.asCharSink()的第三个参数指定文件写入模式; 使用FileWriteMode.APPEND选项打开文件进行写入。

Java 使用 Apache Commons IO 附加到文件

在最后一个示例中,我们使用 Apache Commons IO 附加到文件。

  1. <dependency>
  2. <groupId>commons-io</groupId>
  3. <artifactId>commons-io</artifactId>
  4. <version>2.5</version>
  5. </dependency>

我们需要这种依赖项。

JavaAppendFileApacheCommons.java

  1. package com.zetcode;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.nio.charset.StandardCharsets;
  5. import org.apache.commons.io.FileUtils;
  6. public class JavaAppendFileApacheCommons {
  7. public static void main(String[] args) throws IOException {
  8. String fileName = "src/main/resources/towns.txt";
  9. File file = new File(fileName);
  10. FileUtils.writeStringToFile(file, "Žilina", StandardCharsets.UTF_8, true);
  11. }
  12. }

我们使用FileUtils.writeStringToFile()方法将其附加到文件中。 最后一个append参数确定是否附加到文件。

在本教程中,我们展示了如何使用内置工具和第三方库在 Java 中附加文件。

您可能也对以下相关教程感兴趣: Java 教程Java 列表目录内容Java FileWriter教程Java 文件时间用 Java8 的StringJoiner连接字符串Google Guava 简介用 Java 过滤列表Android 教程