0

我想从“偏移量”读取文件的一些字节,它的长度是“大小”。所以我使用 FIleInputStream 和这段代码:

byte[] data = new byte[size];
FileInputStream fis=new FileInputStream(inputFile);
System.out.println("offset:"+offset+","+"size:"+size);
fis.read(data, offset, size);

所以我有偏移量和大小的真实值,但我收到错误:indexoutofbound。我不明白。谁能展示我是如何摔倒的,以及是否有其他正确的方法可以做到这一点?

4

2 回答 2

1

JavaDoc告诉您:

public int read(byte[] b, int off, int len) throws IOException

Throws:
    IndexOutOfBoundsException - If off is negative, len is negative, or len is 
    greater than b.length - off 

请注意,索引是从 0 开始的。

于 2012-05-06T10:46:33.500 回答
0

我不太确定你在offset这里得到了什么,但offset它意味着你想要存储字节的数组中的偏移量(即起始索引)。

因此,您尝试size从 position 开始将字节读入数组offset- 因此是IndexOutOfBoundsif offset > 0。你需要offset为 0,它应该可以工作。

于 2012-05-06T10:47:46.027 回答