Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-覆盖文件的特定部分_Java_File_Io_Random Access - Fatal编程技术网

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 有没有办法完成这个(看似)简单的任务?我知道您可以附加到文件,但我更感兴趣的是随机访问将文件加载到内存中,更改值,然后重新写入文件 如果有一种方法可以在不加载文件的情况下插入文件,我还没有听说过。您必须先将其他数据移开 除非

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

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个字符