4

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

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)

?

如何覆盖这个问题?

4

1 回答 1

16

我想你正在寻找seek方法。

偏移量write是数组的偏移量。数组有int偏移量。已经有关于“长数组”的提议,但是如果这些实现了,你仍然需要一个重载。

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

于 2010-02-04T16:13:02.180 回答