Почему я получаю ArraIndexOutOfBoundException? - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь скопировать байтовый массив (fileData), который я читаю из файла, в другой байтовый массив (подданные) (под кодом):

                ByteBuffer inputBuffer = decoderInputBuffers[intBufIndex];
                int limit = inputBuffer.capacity();
                int pos = frameIndex * limit;
                byte[] subData = new byte[limit];

                System.arraycopy(fileData, pos, subData, 0, subData.length);

У меня вопрос, почему я получить эту ошибку?

java.lang.ArrayIndexOutOfBoundsException: src.length=732542 srcPos=0 dst.length=1572864 dstPos=0 length=1572864

Как это вообще возможно, поскольку я прямо говорю, каков должен быть размер массива.

1 Ответ

1 голос
/ 18 февраля 2020

Если вы посмотрите на документы (которые у вас есть linknd в комментариях), это говорит о том, что последний параметр функции:

length - это количество элементов массива, которые нужно скопировать.

, поэтому, если вы посмотрите внимательно, вы пытаетесь скопировать 1572864 из массива 732542, и именно поэтому вы получаете исключение

...