не понимаю fileiutputstream.write

221
01 марта 2017, 19:33

Мне нужно скопировать в один файл половину всех байтов, во второй файл вторую половину(или большую часть если количество байт не равное).

int size = fileInputStream.available();
        int middle;
        if(size%2==0) middle = size/2;
        else  middle = (size-1)/2 ;
        byte b[]  = new byte[size];
        while (fileInputStream.available()>0)
        {
            fileInputStream.read(b);
            fileOutputStream.write(b, 0, middle );
            fileOutputStream2.write(b, middle, b.length);
    }
 /***в этом месте вылазит эксцепшин IndexOutOfBoundsException,
             возможно я не правильно себе представляю то как работают методы,
             мне казалось что я первую половину байтов писал в первый файл,
             а вторую половину во второй файл,почему у меня не верно, и как правильно?***/
        }

Я неверно видимо себе преставляю write метод. То как я себе представляю свой код внутри while (, все что выше меня особо не инетресует, просто написал чтобы меньше вопросов было о том что за переменные) Сперва пишу в массив байтов, все содержимое. потом пишу в первый файл write от 0 до середины моего массива. Потом пишу во второй файл с того места где оставонивил, до конца массива.? очевидно я не прав, но я не понимаю почему..., как ввод, вывести в два файла поровну(+-1байт) при помощи именно массивов байтов?

Answer 1

В методе FileOutputStream.write() последний параметр это количество байтов, а не индекс последнего байта, как вы предполагаете. Отсюда и исключение.

READ ALSO
Почему возникает java.lang.NoClassDefFoundError?

Почему возникает java.lang.NoClassDefFoundError?

При использовании данного кода:

328
как создать облачный сервис?

как создать облачный сервис?

Здравствуйте, хотелось бы узнать, по каким технологиям создают облачные сервисы типа Cloud games? Грубо говоря, виртуализация железа или софта,...

293
Не выгружаются изображения из памяти

Не выгружаются изображения из памяти

ЗдравствуйтеСтолкнулся с проблемой

211
TestNG: testng doesn't support the “mode” attribute

TestNG: testng doesn't support the “mode” attribute

ЗдравствуйтеНе так давно, когда изучал TestNG, все работало

275