有没有办法使用Java PrintWriter写入特定的行?

时间:2014-05-09 11:56:48

标签: java file-io printwriter println

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

你可以做到这一点,但你必须做突破。

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

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

答案 2 :(得分:1)

不仅PrintWriter不能这样做。所有其他Writers和OutputStream也不能这样做。甚至随机访问渠道也不能(单独)。

这是因为“一条线”没有特定的长度。此外,如果你想插入一些东西,你将不得不移动其后的所有其他内容。

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