0

我想使用 Java 更新文本文件的特定部分。我希望能够扫描文件并选择要更新的特定行,有点像在数据库中,例如给定文件:

ID Value
1  100
2  500
4  20

我想插入 3 并更新 4,例如

ID Value
1  100
2  500
3  80
4  1000

有没有办法实现这个(看似)简单的任务?我知道您可以附加到文件,但我对随机访问更感兴趣

4

4 回答 4

1

将文件加载到内存中,更改您的值,然后重新写入文件

如果有一种方法可以在不加载文件的情况下插入文件,我还没有听说过。您必须先将其他数据移开。

除非您正在处理大文件,否则性能通常不是太大的问题

于 2012-11-15T15:24:44.973 回答
1

我知道您可以附加到文件,但我对随机访问更感兴趣

您正在尝试在文件中间插入和删除字节。你不能那样做。文件系统根本不(通常)支持这一点。您可以覆盖特定字节,但不能插入或删除它们。

如果您的记录是固定长度(以字节为单位),您可以使用随机访问更新特定记录,但看起来情况并非如此。

您可以将整个文件加载到内存中,也可以从原始文件中读取,将旧数据或新数据写入到新文件中,以每行为基础。

于 2012-11-15T15:26:45.480 回答
1

您可以使用 java 中的随机访问文件来执行此操作,您可以使用可用的方法放置当前的写入和读取位置。你可以在这里探索更多

于 2012-11-15T15:28:59.247 回答
0

正如前面的答案所说,使用流是不可能做到这一点的。您可以尝试使用属性,即可以在文本文件中保存和修改的键值对。例如,您可以使用以下命令向文件添加新属性

setProperty(String key, String value)

此方法添加一个新属性,或者如果已经存在,则使用选择的键修改属性的值。

显然,在文件末尾添加了新属性,但是缺少排序对于性能来说不是问题,因为对文件的访问是通过调用 Hashtable 方法 put 的 getProperty 方法进行的。

有关一些示例,请参见本教程:

http://docs.oracle.com/javase/tutorial/essential/environment/properties.html

于 2012-11-15T16:04:54.447 回答