我在彼此之后使用了两个FileWriter
。
第一个不附加
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
会破坏整个文件,因此会让我丢失数据。
我使用两个FileWriter
的原因是第一个应该覆盖我的文本文件的第一行,而第二个应该附加到文件的末尾。
这样做的正确方法是什么?
编辑: 我意识到可以先读取所有内容然后将其保存回来,但效率非常低,特别是因为我需要在文件中存储大量数据。
答案 0 :(得分:2)
使用RandomAccessFile.seek(...)将数据写入特定位置的文件。
但除了读取内存,替换第一行并再次写入文件之外,“替换第一行文件”没有什么魔力。除非该行总是具有相同的长度。而且你要注意不要覆盖EOL角色。 : - )
顺便说一下,不要忘记在关闭前调用flush()。