Java 追加到文件
上次修改时间:2024 年 7 月 4 日
在本文中,我们将展示如何在 Java 中追加到文件。我们使用 FileWriter、FileOutputStream、Files、RandomAccessFile 和 Google Guava。
追加到文件通常用于日志记录。
在示例中,我们将文本追加到文件中。
Bratislava Moldava Košice Trenčín Prešov
我们使用此文本文件。它位于 src/main/resources 目录中。
使用 FileWriter 追加到文件
FileWriter 类用于写入字符流。FileWriter 接受一个可选的第二个参数:append。如果设置为 true,则数据将被写入到文件末尾。
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
void main() throws IOException {
String fileName = "src/main/resources/towns.txt";
try (var fw = new FileWriter(fileName, StandardCharsets.UTF_8, true)) {
fw.append("Žilina\n");
}
}
此示例使用 FileWriter 将数据追加到文件。
try (var fw = new FileWriter(fileName, StandardCharsets.UTF_8, true)) {
fw.append("Žilina\n");
}
我们定义 FileWriter 并使用其 append 方法。
使用 FileOutputStream 追加到文件
FileOutputStream 是一个用于将数据写入 File 或 FileDescriptor 的输出流。它接受一个可选的第二个参数,该参数确定数据是否追加到文件。
import java.io.FileOutputStream;
import java.io.IOException;
void main() throws IOException {
String fileName = "src/main/resources/towns.txt";
byte[] tb = "Žilina\n".getBytes();
try (var fos = new FileOutputStream(fileName, true)) {
fos.write(tb);
}
}
此示例使用 FileOutputStream 将数据追加到文件。
try (var fos = new FileOutputStream(fileName, true)) {
fos.write(tb);
}
我们创建一个 FileOutputStream 的实例,并将 append 参数设置为 true,并使用其 write 方法。
使用 Files 追加到文件
java.nio.file.Files 类是一个方便的类,可以轻松地将数据追加到文件。
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
void main() throws IOException {
String fileName = "src/main/resources/towns.txt";
String town = "Žilina\n";
Files.writeString(Paths.get(fileName), town, StandardCharsets.UTF_8,
StandardOpenOption.APPEND);
}
此示例使用 Files 追加数据。
Files.writeString(Paths.get(fileName), town, StandardCharsets.UTF_8,
StandardOpenOption.APPEND);
Files.writeString 的第四个参数告诉我们如何打开文件进行写入。使用 StandardOpenOption.APPEND,文件已打开以进行追加。
使用 RandomAccessFile 追加到文件
RandomAccessFile 用于读取和写入随机访问文件。
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.StandardCharsets;
void main() throws IOException {
String fileName = "src/main/resources/towns.txt";
var file = new File(fileName);
var town = "Žilina\n";
try (var raf = new RandomAccessFile(file, "rw")) {
raf.seek(raf.length());
raf.write(town.getBytes(StandardCharsets.UTF_8));
}
}
在此示例中,我们使用 RandomAccessFile 追加数据。
raf.seek(raf.length()); raf.write(town.getBytes(StandardCharsets.UTF_8));
我们确定文件的长度,定位到文件末尾,并写入字节。
使用 Guava 追加到文件
我们可以使用 Guava 库来追加到文件。
implementation 'com.google.guava:guava:33.2.1-jre'
我们需要 Guava 依赖项。
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;
void main() 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 类追加到文件。
CharSink chs = Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND);
Files.asCharSink 的第三个参数指定文件写入模式;使用 FileWriteMode.APPEND 选项,该文件被打开以进行写入。
来源
在本文中,我们展示了如何使用内置工具和 Guava 库在 Java 中追加到文件。
作者
列出所有Java教程。