我知道这个问题以前在这里被问过并回答过,但我的问题是一个特殊情况,我还没有找到答案。
我有100000到一百万个int
类型的数组,"固定"长度为32^3,我需要将这些数组存储在一个文件中,而无需对它们进行迭代。我知道使用ObjectOutputStream是可能的,我甚至找到了如何将多个对象写入一个文件并读回(这听起来可能解决了我的问题),但不,它没有。
我的实际问题是,我需要向该文件添加/更新单个数组,并读取单个数组。整个数组可能在一秒钟内最多有10个数组被修改,所以我需要将更改写入该文件,而无需重写整个文件,因为这是一种缓慢而低效的方式。
因此,我的问题是:是否可以将固定长度的int
数组保存到包含多个相同长度int
数组的文件中?并从该文件中读取特定的int
阵列?而不必在读取或写入时遍历每个数组?
您可以使用RandomAccessFile
如果您的数组是固定长度的,那么您可以将RandomAccessFile视为大型数组,并将位置计算为index_of_array_you_need*array_size+index_of_the_element_in_array
您的数组大小将为32768*4字节,因此如果您需要更新第三个数组中位置100处的数字,则应通过地址2*32768*4+100*4 从RandomAccessFile获取4个字节