你能 select 使用 BufferedWriter 写入哪一行吗?

Can you select which line to write to with a BufferedWriter?

我有一个程序可以对数据进行排序并根据这些数据创建百分比值。我正在使用 java.io.BufferedWriter 写入我的文件。

我的问题是,一旦我读入了我的数据文件并将需要的信息打印到我的新文件中,我就无法在现有行上添加我计算出的百分比值,只能添加到文件末尾。

例如。我有

12 F 56 Bovine
...
...
NewPercentages
%%
%%

我要

12 F 56 Bovine %%
...            %%

您似乎正在打印一些数据行,并且您想更改已经打印的行。

使用 Java 的 BufferedWriter 是不可能的。事实上,对于我熟悉的大多数 I/O 库来说,这是不可能的——你似乎误解了 Java 的 BufferedWriter(以及通常的输出)是如何工作的.

BufferedWriter(以及大多数其他用于写入输出的 API,在 Java 和其他地方)的基本假设是:您只发送最终的、完整的输出。 一旦你发送了输出,它就不受你的控制了。它将被发送到它的最终目的地,这可能意味着被写入输出文件,打印在 console/terminal window 上,发送到不同的计算机,无论如何。所以没有 "taking back" 或 "editing" - 就像您 post 编辑的一封信,数据已到达目的地。


解决您的问题:如果您想change/amend您正在打印的数据,您需要延迟打印。您需要准备完整的输出,然后才打印出来。

有多种方法可以做到这一点。最简单的方法是通过创建要打印的值列表(例如使用 java.util.List)来准备内存中的所有内容。然后您可以随心所欲地查看输出数据,并在完成后将其打印出来。

有很多方法可以做到这一点(直接创建输出字符串,创建稍后打印的 "data holder" 对象,...)- 这取决于您的问题。

希望对您有所帮助。如果您仍然遇到问题,post 您的代码以及您遇到的问题作为一个新问题。祝你好运!