为什么RandomAccessFile使用int作为偏移量

时间:2010-02-04 16:09:24

标签: java int long-integer random-access

我正在编写一些数据访问测试实现,我需要随机访问文件内容。这是代码:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);

其中offset的类型为long。 为什么RandomAccessFile没有提供方法:

public void write(byte b[], long off, int len)

如何覆盖此问题?

1 个答案:

答案 0 :(得分:15)

我认为您正在寻找seek方法。

write中的偏移量是数组的偏移量。数组有int个偏移量。已经提出了“长阵列”的建议,但如果实施了这些建议,你仍然需要过载。

NIO中的映射文件存在一个问题,即由于某种原因,等效MappedByteBuffer.position仅使用int。见CR 6347833(9票)。