我想在 .txt 文件的特定位置插入一行。现在我知道的唯一方法是将整个文件作为数组读出,将给定的行放在正确的位置,然后将整个文件写回去。有没有更简单的方法可以使用 Java 实现这一点?我的目的是尽可能减少文件访问。
问问题
5355 次
3 回答
6
有没有更简单的方法可以使用 Java 实现这一点?
使用 Java 7,除非您的插入点位于大文件的末尾,否则我会简单地执行以下操作:
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);
于 2013-10-02T08:56:01.920 回答
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);
}
于 2013-10-02T08:55:18.050 回答
0
RandomAccessFile
不要解决这个问题。在这篇文章中进行了讨论。无论如何,您都应该重写文件。
您只能使用一些缓冲区读取和写入它,更改它并立即写入新的以节省程序内存。
于 2013-10-02T09:03:42.870 回答