Java では、RandomAccessFile を使用していくつかの作業を行っています。8192 バイトまたは 8kb のファイルがあります。
以下は、ArrayIndexOutOfBoundsException を引き起こしています。
File file = new File("TestFile1");
raf = new RandomAccessFile(file, "rw");
byte[] temp = new byte[4096];
raf.read(temp, 4096, 4096);
このようなものでも同じエラーが発生します。
raf.read(temp, 4096, 1);
このようなものは完全に機能しますが:
raf.read(temp, 0, 4096);
以下を実行すると、8192 が表示されるため、これが機能しない理由について混乱しています。
System.out.println(raf.getChannel().size());
ファイルの後半から読み取ろうとすると、範囲外エラーが発生するのはなぜですか?