2

我想在 .txt 文件的特定位置插入一行。现在我知道的唯一方法是将整个文件作为数组读出,将给定的行放在正确的位置,然后将整个文件写回去。有没有更简单的方法可以使用 Java 实现这一点?我的目的是尽可能减少文件访问。

4

3 回答 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 回答