0

FileWriter一个接一个地使用两个 s。

第一个不附加

BufferedWriter versionWriter = new BufferedWriter(new FileWriter(new File(filePath)));
versionWriter.write(s);
versionWriter.close();

而我想追加一个。

BufferedWriter bw = new BufferedWriter(new FileWriter(new File(filePath), true));
bw.newLine();
bw.write(s);

问题是我首先FileWriter破坏了整个文件,因此使我丢失了数据。

我使用两个FileWriters 的原因是第一个应该覆盖我的文本文件的第一行,而第二个应该附加到文件的末尾。

这样做的正确方法是什么?

编辑:我意识到可以先读取所有内容然后将其保存回来,但这非常低效,特别是因为我需要在文件中存储大量数据。

4

1 回答 1

2

使用 RandomAccessFile.seek(...) 将数据写入文件的特定位置。

但是除了读入内存,替换第一行并再次写入文件之外,“替换文件的第一行”并没有什么魔力。除非那条线总是有相同的长度。并且注意不要覆盖 EOL 字符。:-)

顺便说一句,不要忘记在关闭之前调用 flush() 。

于 2013-03-24T12:01:17.030 回答