4

私はいくつかのデータ アクセス テストの実装を作成しており、ファイル コンテンツへのランダム アクセスが必要です。コードは次のとおりです。

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

ここで、オフセットの型は long です。RandomAccessFile がメソッドを提供しないのはなぜですか:

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

?

この問題を無効にする方法は?

4

1 に答える 1

16

メソッドを探していると思いますseek

オフセット inwriteは、配列へのオフセットです。配列にはintオフセットがあります。「長い配列」の提案がありましたが、これらが実装された場合でも、オーバーロードが必要になります。

MappedByteBuffer.positionNIO のマップされたファイルには、何らかの理由で同等のものしか使用しないという問題がありますintCR 6347833 (9 票)を参照してください。

于 2010-02-04T16:13:02.180 に答える