【问题标题】:Is there a way to use Java PrintWriter to write to a specific line?有没有办法使用 Java PrintWriter 写入特定行?
【发布时间】:2014-05-09 11:56:47
【问题描述】:

我有一个 Java 程序,它使用 PrintWriter 使用大量 .println() 语句将文本写入文件,一切正常。 我想知道的是:有没有办法写入输出文件中的特定行?

例如 如果我的程序使用 10 个 .println() 语句将 10 行写入输出文件。 有没有一种方法可以在我的程序结束时告诉它在文件中的第 3 行文本中写入一行,然后将剩余的 7 行向下移动一行,以便为新的第 3 行腾出空间?

任何帮助将不胜感激, 提前致谢, 斯蒂芬。

【问题讨论】:

    标签: java file-io printwriter println


    【解决方案1】:

    你可以这样做,但你必须这样做。

    最简单的解决方案是使用您需要的额外行重写文件。

    或者使用RandomAccessFile,可以搜索第三行,将文件中的所有数据复制下来,插入要添加的行。

    【讨论】:

      【解决方案2】:

      不,PrintWriter 只能覆盖文件或追加到文件末尾。

      如果您“覆盖”一行,则新行的长度可能与原始行不同,因此该行后面的所有内容都必须移动,而 PrintWriter 无法做到这一点。

      【讨论】:

        【解决方案3】:

        不仅 PrintWriter 不能做到这一点。所有其他 Writers 和 OutputStreams 也不能这样做。甚至随机访问通道都无法做到(单独)。

        这是因为“一行”没有特定的长度。此外,如果你想插入一些东西,你必须移动它后面的所有东西。

        您可以做的是重新定位流并覆盖那里的内容。

        【讨论】:

          猜你喜欢
          • 2020-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多