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したがって、位置から開始して、バイトを配列に読み込もうとしています。offsetつまり、IndexOutOfBoundsifoffset > 0です。あなたはoffset0である必要があり、それはうまくいくはずです。

于 2012-05-06T10:47:46.027 に答える