java .lang.ArrayIndexOutOfBoundsException для FileOutputStream при получении данных с сервера - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу разработать приложение android, которое получает файлы с сервера.

Сервер отправляет сначала пакет с (FileOriginalName и FileLength) , затем он начинает отправлять пакет данных (один за другим / blo c by blo c), каждый пакет содержит (данные файла 8Kb и blocIndex) .

когда я получаю первый пакет, я создаю файл с заданной длиной:

      RandomAccessFile f = null;
        try {
            f = new RandomAccessFile(originalFileName, "rw");
            f.setLength(length);
        } catch (IOException e) {
            e.printStackTrace();
        }

, затем я вызываю следующий код каждый раз, когда получаю пакеты данных с сервера:

              FileOutputStream _fOS = new FileOutputStream(fileOriginalPath);
            _fOS.write(blockData, blockIndex << 13, blockData.length);
            _fOS.close(); 

я получаю следующую ошибку в _fOS.write:

java .lang.ArrayIndexOutOfBoundsException: length = 5077; regionStart = 8192; regionLength = 5077

1 Ответ

0 голосов
/ 11 апреля 2020

я нахожу решение,

для первого пакета, я сохраняю originalFileName ,

для пакетов данных,

 for each received packet i call the following method

            RandomAccessFile f = new RandomAccessFile(originalFileName, "rw");
            f.seek(blockIndex << 13);
            f.write(blockData);
            f.close();

надеюсь, что это поможет, спасибо

...