2012-05-06 24 views
0

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

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

所以我有偏移量和大小的真实值,但我接收器错误:indexoutofbound。我不明白。任何人都可以展示我跌倒的方式,以及是否有其他正确的方式来做到这一点?

+0

不是'fis.read(data,offset,size);'应该是'fis.read(data,offset,size-1);' –

回答

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。

0

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

所以,你想读size字节到您的数组,起始于offset位置 - 因此一个IndexOutOfBounds如果offset > 0。你需要offset为0,它应该工作。

+0

yes!你是对的! :)感谢您的解释。我混淆了偏移量和大小参数。我认为文件的偏移量,但它是真正的数组抵消。那么你有没有简单的方法从文件中读取偏移量和最后大小的一些字节? – Kiradev

+0

'read'方法将返回读取的字节数 - 您可以使用它连续读取以计算文件大小...或将输入数据转换为其他形式。 – craigmj

+0

感谢您的回答 – Kiradev