FileChannel#map
は、長さパラメータとしてlong
をとります。しかしInteger.MAX_VALUEより大きいJavaのファイルをメモリマップする方法はありますか?ファイルをマップする(すなわち、メモリマップを開始する)ために使用される
、the documentation on FileChannel#map
は、次の言葉:
サイズ - マッピングされる領域の大きさ。彼らは唯一の
Integer.MAX_VALUE
までの値を許可した場合、なぜ彼らは最初の場所で長く使用しない、非負とInteger.MAX_VALUEのすべての
まず超えないでなければなりませんか? それ以上のファイルを一度にマップすることはどういうことですか?私は10ギガバイトのファイルをマップしたい場合
例えば、私は(これは大きすぎる長さInvalidArgumentException
で終わる)このような何かを書きたいと思います:
long length = 10_000_000_000;
MappedByteBuffer buffer = (new RandomAccessFile("./memory.map", "rw")).getChannel().map(FileChannel.MapMode.READ_WRITE, 0, length);
私が持っていますかそのための連続したメモリマップを作成します。たとえば、与えられたファイルの2GBをマッピングする5つのメモリマップ?