ely*_*33t 2 java io indexoutofboundsexception
在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);
Run Code Online (Sandbox Code Playgroud)
即使是这样的事情也会导致同样的错误:
raf.read(temp, 4096, 1);
Run Code Online (Sandbox Code Playgroud)
虽然这样的东西很完美:
raf.read(temp, 0, 4096);
Run Code Online (Sandbox Code Playgroud)
当我运行以下内容时,我得到8192,这就是为什么我对为什么这不起作用感到困惑:
System.out.println(raf.getChannel().size());
Run Code Online (Sandbox Code Playgroud)
如果我尝试从文件的后半部分读取,为什么会出现越界错误?
代替:
raf.getBytes(temp,4096,4096);
Run Code Online (Sandbox Code Playgroud)
这听起来像你想要的:
raf.seek(4096); raf.getBytes(temp,0,4096);
Run Code Online (Sandbox Code Playgroud)
第二个参数getBytes将偏移量提供给将要读取内容的缓冲区,而不是文件中的偏移量.