ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Java 附加到文件 原文:http://zetcode.com/articles/javaappendtofile/ Java 附加到文件教程显示了如何用 Java 附加到文件。 我们使用`FileWriter`,`FileOutputStream`,`Files`,`RandomAccessFile`,Google Guava 和 Apache Commons IO。 附加到文件通常在日志记录中使用。 在示例中,我们将文本附加到文件中。 `towns.txt` ```java Bratislava Moldava Košice Trenčín Prešov Žilina ``` 我们使用此文本文件。 它位于`src/main/resources`目录中。 ## Java 使用`FileWriter`附加到文件 `FileWriter`类用于编写字符流。 `FileWriter`采用可选的第二个参数:`append`。 如果设置为`true`,则数据将被写入文件末尾。 `JavaAppendFileFileWriter.java` ```java package com.zetcode; import java.io.FileWriter; import java.io.IOException; public class JavaAppendFileFileWriter { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/towns.txt"; try (FileWriter fw = new FileWriter(fileName, true)) { fw.append("Žilina\n"); } } } ``` 本示例使用`FileWriter`将数据附加到文件中。 ## Java 用`FileOutputStream`附加到文件 `FileOutputStream`是用于将数据写入`File`或`FileDescriptor`的输出流。 它带有一个可选的第二个参数,该参数确定是否将数据附加到文件中。 `JavaAppendFileFileOutputStream.java` ```java package com.zetcode; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class JavaAppendFileFileOutputStream { public static void main(String[] args) throws FileNotFoundException, IOException { String fileName = "src/main/resources/towns.txt"; byte[] tb = "Žilina\n".getBytes(); try (FileOutputStream fos = new FileOutputStream(fileName, true)) { fos.write(tb); } } } ``` 本示例使用`FileOutputStream`将数据附加到文件中。 ## Java 使用`Files`附加到文件 Java 7 引入了`java.nio.file.Files`类,该类可用于轻松地将数据附加到文件中。 `JavaAppendFileFiles.java` ```java package com.zetcode; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class JavaAppendFileFiles { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/towns.txt"; byte[] tb = "Žilina\n".getBytes(); Files.write(Paths.get(fileName), tb, StandardOpenOption.APPEND); } } ``` 本示例将数据附加`Files`。 ```java Files.write(Paths.get(fileName), tb, StandardOpenOption.APPEND); ``` `Files.write()`的第三个参数表明如何打开文件进行写入。 使用`StandardOpenOption.APPEND`可以打开文件进行附加。 ## Java 用`RandomAccessFile`附加到文件 `RandomAccessFile`用于读取和写入随机访问文件。 `JavaAppendFileRandomAccessFile.java` ```java package com.zetcode; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class JavaAppendFileRandomAccessFile { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/towns.txt"; File file = new File(fileName); try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) { long length = raf.length(); raf.setLength(length + 1); raf.seek(raf.length()); raf.writeBytes("Žilina\n"); } } } ``` 在此示例中,我们将数据附加`RandomAccessFile`。 ## Java 用 Guava 附加到文件 我们可以使用 Guava 库将其附加到文件中。 ```java <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version> </dependency> ``` 我们需要这种 Guava 依赖。 `JavaAppendFileGuava.java` ```java package com.zetcode; import com.google.common.base.Charsets; import com.google.common.io.CharSink; import com.google.common.io.FileWriteMode; import com.google.common.io.Files; import java.io.File; import java.io.IOException; public class JavaAppendFileGuava { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/towns.txt"; File file = new File(fileName); CharSink chs = Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND); chs.write("Žilina\n"); } } ``` 在示例中,我们使用 Guava 的`CharSink`类将其附加到文件中。 ```java CharSink chs = Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND); ``` `Files.asCharSink()`的第三个参数指定文件写入模式; 使用`FileWriteMode.APPEND`选项打开文件进行写入。 ## Java 使用 Apache Commons IO 附加到文件 在最后一个示例中,我们使用 Apache Commons IO 附加到文件。 ```java <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> ``` 我们需要这种依赖项。 `JavaAppendFileApacheCommons.java` ```java package com.zetcode; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.apache.commons.io.FileUtils; public class JavaAppendFileApacheCommons { public static void main(String[] args) throws IOException { String fileName = "src/main/resources/towns.txt"; File file = new File(fileName); FileUtils.writeStringToFile(file, "Žilina", StandardCharsets.UTF_8, true); } } ``` 我们使用`FileUtils.writeStringToFile()`方法将其附加到文件中。 最后一个`append`参数确定是否附加到文件。 在本教程中,我们展示了如何使用内置工具和第三方库在 Java 中附加文件。 您可能也对以下相关教程感兴趣: [Java 教程](/lang/java/), [Java 列表目录内容](/articles/javalistdirectory/), [Java `FileWriter`教程](/java/filewriter/), [Java 文件时间](/articles/javafiletime/) ,[用 Java8 的`StringJoiner`连接字符串](/articles/java8stringjoiner/),[Google Guava 简介](/articles/guava/),[用 Java 过滤列表](/articles/javafilterlist/)或 [Android 教程](/mob/android/)。