我想在.txt文件的特定位置插入一行。现在我知道的唯一方法是将整个文件作为数组读出,将给定的行放在正确的位置,然后将整个内容写回来。有没有更简单的方法来使用Java实现这一目标?我的目的是尽可能减少文件访问。
答案 0 :(得分:6)
使用Java有没有更简单的方法来实现这一目标?
使用Java 7,除非您的插入点位于大文件的末尾,否则我只会这样做:
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);
答案 1 :(得分:2)
尝试使用BufferedReader
。
想法是读取行并立即将其写入其他文件。
BufferedReader rd = null;
BufferedWriter wt = null;
try {
rd = new BufferedReader(
new InputStreamReader(
new FileInputStream("/yourfile.txt"), "UTF-8")
);
wt = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(
"/newfile" + ".txt"), "UTF-8")
);
int count = 0;
for (String line; (line = reader.readLine()) != null;) {
count++
if (count == 6) {
// add your line
// wt.write(newline);
}
wt.write(line);
wt.newLine();
}
} finally {
close(wt);
close(rd);
}
答案 2 :(得分:0)
RandomAccessFile
无法解决此问题。在this帖子中对此进行了讨论。无论如何你应该重写文件
您只能使用一些缓冲区读取和写入它,更改它并将写入更新为新的以保存程序存储器。