Java-如何将字符串插入到txt文件的某一行,比如line6

时间:2013-10-02 08:48:10

标签: java file filewriter

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

3 个答案:

答案 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帖子中对此进行了讨论。无论如何你应该重写文件 您只能使用一些缓冲区读取和写入它,更改它并将写入更新为新的以保存程序存储器。