Java-覆盖文件的特定部分
我想使用Java更新文本文件的特定部分。我希望能够扫描文件并选择要更新的特定行,有点像在数据库中,例如给定文件:Java-覆盖文件的特定部分,java,file,io,random-access,Java,File,Io,Random Access,我想使用Java更新文本文件的特定部分。我希望能够扫描文件并选择要更新的特定行,有点像在数据库中,例如给定文件: ID Value 1 100 2 500 4 20 我想插入3并更新4,例如 ID Value 1 100 2 500 3 80 4 1000 有没有办法完成这个(看似)简单的任务?我知道您可以附加到文件,但我更感兴趣的是随机访问将文件加载到内存中,更改值,然后重新写入文件 如果有一种方法可以在不加载文件的情况下插入文件,我还没有听说过。您必须先将其他数据移开 除非
ID Value
1 100
2 500
4 20
我想插入3并更新4,例如
ID Value
1 100
2 500
3 80
4 1000
有没有办法完成这个(看似)简单的任务?我知道您可以附加到文件,但我更感兴趣的是随机访问将文件加载到内存中,更改值,然后重新写入文件 如果有一种方法可以在不加载文件的情况下插入文件,我还没有听说过。您必须先将其他数据移开
除非您处理的是大文件,否则性能通常不太重要将文件加载到内存中,更改值,然后重新写入文件 如果有一种方法可以在不加载文件的情况下插入文件,我还没有听说过。您必须先将其他数据移开 除非您经常处理大文件,否则性能并不是一个太大的问题 我知道你可以附加到一个文件,但我更感兴趣的是随机访问 你试图在文件中间插入和删除字节。你不能那样做。文件系统(通常)不支持这一点。您可以覆盖特定字节,但不能插入或删除它们 如果您的记录是固定长度(以字节为单位)的,则可以使用随机访问来更新特定记录,但情况似乎并非如此 您可以将整个文件加载到内存中,也可以从原始文件中读取,然后根据每行的情况使用旧数据或新数据写入新文件 我知道你可以附加到一个文件,但我更感兴趣的是随机访问 你试图在文件中间插入和删除字节。你不能那样做。文件系统(通常)不支持这一点。您可以覆盖特定字节,但不能插入或删除它们 如果您的记录是固定长度(以字节为单位)的,则可以使用随机访问来更新特定记录,但情况似乎并非如此
您可以将整个文件加载到内存中,也可以从原始文件中读取,然后使用旧数据或新数据(视情况而定)按行写入新文件。您可以使用java中的随机访问文件执行此操作,您可以使用可用的方法放置当前的写入和读取位置。您可以使用java中的随机访问文件浏览更多内容,您可以使用可用的方法放置当前的写入和读取位置。您可以探索更多内容,正如前面的答案所说,使用流是不可能的。您可以尝试使用属性,即可以在文本文件中保存和修改的键、值对。 例如,可以使用命令向文件中添加新特性
setProperty(String key, String value)
此方法可添加新属性,或者如果已存在,则使用choosen键修改属性的值
显然,在文件末尾添加了新的属性,但是缺少排序对性能来说不是问题,因为对文件的访问是通过调用Hashtable方法put的getProperty方法进行的
有关一些示例,请参见本教程:
正如前面的答案所说,使用流来实现这一点是不可能的。您可以尝试使用属性,即可以在文本文件中保存和修改的键、值对。 例如,可以使用命令向文件中添加新特性
setProperty(String key, String value)
此方法可添加新属性,或者如果已存在,则使用choosen键修改属性的值
显然,在文件末尾添加了新的属性,但是缺少排序对性能来说不是问题,因为对文件的访问是通过调用Hashtable方法put的getProperty方法进行的
有关一些示例,请参见本教程:
我会提出建议,因为没有人会:)继续,并获得一个合适的数据库。我会提出建议,因为没有人会:)继续,并获得一个合适的数据库。这种方法的问题是,如果我想用10个字符覆盖一个1个字符长的行,这将简单地覆盖下一行的9个字符这种方法的问题是,如果我想覆盖一行长度为1个字符的10个字符,这将简单地覆盖下一行的9个字符