我正在编写一些数据访问测试实现,我需要随机访问文件内容。这是代码:
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)
如何覆盖此问题?
答案 0 :(得分:15)
我认为您正在寻找seek
方法。
write
中的偏移量是数组的偏移量。数组有int
个偏移量。已经提出了“长阵列”的建议,但如果实施了这些建议,你仍然需要过载。
NIO中的映射文件存在一个问题,即由于某种原因,等效MappedByteBuffer.position
仅使用int
。见CR 6347833(9票)。