尝试覆盖文件中间的数据而不影响文件的开头

时间:2014-03-28 20:20:30

标签: java file large-files overwrite randomaccessfile

我有一个算法不按顺序计算向量的组件(字节)。我将矢量存储在一个文件中,因为当我真正运行它时,矢量将是数百万字节长。但作为一个简单的例子,我想从一个空文件开始:

-1 -1 -1 -1 -1 -1 -1 -1

然后我的算法将一次填写两个值:

-1 -1 4 7 -1 -1 -1 -1

然后

-1 -1 4 7 -1 -1 3 9

等。直到所有值都被填写。这可能吗?我尝试过使用随机访问文件,但是当你使用seek()方法时,它会在我想要编辑的所有值之前填入0,删除我的算法所做的任何先前的计算。由于我需要这个程序来处理大量的数字,所以不能将整个文件拉入内存。有任何想法吗?

2 个答案:

答案 0 :(得分:0)

这里的建议并不是真正的答案。对不起,我无法对状态发表评论

打开文件 一次将这些值存储在内存中的小块中 然后只需写入不同的文件,同时清除内存和东西

答案 1 :(得分:0)

大多数文件系统都不是真正的随机访问,因此从实际角度来看,很难或不可能在不读取整个文件并将其写回磁盘的情况下修改文件的中间部分。您可能需要做的是一次读取文件中的一个部分,适当地修改该部分,然后将其写回临时文件。完成后,您可以用临时文件替换原始文件。