我想使用Java更新文本文件的特定部分。我希望能够扫描文件并选择要更新的特定行,有点像数据库,例如给定文件:
ID Value
1 100
2 500
4 20
我想插入3并更新4,例如
ID Value
1 100
2 500
3 80
4 1000
有没有办法实现这个(貌似)简单的任务?我知道你可以追加到一个文件,但我对随机访问更感兴趣
答案 0 :(得分:1)
将文件加载到内存中,更改值,然后重新写入文件
如果有一种方法可以在不加载的情况下插入文件,我还没有听说过。您必须先将其他数据移开。
除非你处理大文件,否则性能不是太大的问题
答案 1 :(得分:1)
我知道你可以追加到一个文件,但我对随机访问更感兴趣
您正尝试在文件中间插入和删除字节。你不能这样做。文件系统根本不支持(通常)。您可以覆盖特定字节,但不能插入或删除它们。
您可以使用随机访问更新特定记录,如果您的记录是固定长度(以字节为单位),但看起来并非如此。
您可以将整个文件加载到内存中,也可以从原始文件中读取,使用旧数据或新数据以每行为基础写入新文件。
答案 2 :(得分:1)
您可以使用java中的随机访问文件来执行此操作,您可以使用可用方法放置当前的写入和读取位置。您可以浏览更多here
答案 3 :(得分:0)
正如之前的回答所说,使用流不可能做到这一点。您可以尝试使用属性,这些属性是可以在文本文件中保存和修改的键值对。 例如,您可以使用命令
将新属性添加到文件中setProperty(String key, String value)
此方法添加一个新属性,或者,如果已存在,则使用选择的键修改属性的值。
显然,在文件的末尾添加了新属性,但缺少排序对于性能来说不是问题,因为访问文件是使用调用Hashtable方法put的getProperty方法进行的。
有关示例,请参阅本教程:
http://docs.oracle.com/javase/tutorial/essential/environment/properties.html