2010-02-04 63 views
3

我正在編寫一些數據訪問測試實現,我需要隨機訪問文件內容。代碼如下:爲什麼RandomAccessFile使用int作爲偏移量

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) 

如何覆蓋此問題?

回答

15

我認爲您正在尋找seek方法。

write中的偏移量是數組中的偏移量。數組有int偏移量。有人提出了「長陣列」的建議,但是這些實施,你仍然需要超載。

NIO中的映射文件有一個問題,因爲某些原因,等效MappedByteBuffer.position只使用int。見CR 6347833(9票)。

+1

+1。有趣的是,作爲Java唯一的mmap接口的JDK「MemoryMappedBuffer」只在其position()方法中使用了'int',這與OP所關心的方式相似。去搞清楚。 – 2010-02-04 16:30:38

+0

是的,我打算去看看...... – 2010-02-04 16:37:07

+0

那麼,它不是文件內的偏移量?然後int是好的,我會alwasy調用.seek(),謝謝。 – 2010-02-05 12:36:03

相關問題