В общем, вопрос в следующем. Нужно из ByteArrayOutputStream записать в ByteArrayInputStream.
То есть, е считываю данные из файла в ByteArrayOutputStream, а потом это все надо записать в другой файл с помощью ByteArrayInputStream.
Делаю так
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//считываем данные
ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
Так ли я это делаю? или бред какой то?
Так конечно можно, но проблема в том, что вы сначала по сути все пишете byte[], потом его засовываете в ByteArrayInputStream - то есть по сути вместо файловой системы используете оперативную память, которая как известно не бесконечна.
Обычно такое копирование из потока в поток делается через channels.
Если неохота сильно заморачиваться берите Apache Commons - там есть метод copy, который копирует из потока в поток через внутренний буфер (размер можно задавать) - реализован через java.nio.channels
Сборка персонального компьютера от Artline: умный выбор для современных пользователей