Мне нужно скопировать в один файл половину всех байтов, во второй файл вторую половину(или большую часть если количество байт не равное).
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байт) при помощи именно массивов байтов?
В методе FileOutputStream.write()
последний параметр это количество байтов, а не индекс последнего байта, как вы предполагаете. Отсюда и исключение.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, хотелось бы узнать, по каким технологиям создают облачные сервисы типа Cloud games? Грубо говоря, виртуализация железа или софта,...
ЗдравствуйтеНе так давно, когда изучал TestNG, все работало