ByteArrayOutputStream to ByteArrayInputStream

182
26 января 2018, 22:50

В общем, вопрос в следующем. Нужно из ByteArrayOutputStream записать в ByteArrayInputStream. То есть, е считываю данные из файла в ByteArrayOutputStream, а потом это все надо записать в другой файл с помощью ByteArrayInputStream.

Делаю так

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//считываем данные
ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());

Так ли я это делаю? или бред какой то?

Answer 1

Так конечно можно, но проблема в том, что вы сначала по сути все пишете byte[], потом его засовываете в ByteArrayInputStream - то есть по сути вместо файловой системы используете оперативную память, которая как известно не бесконечна.

Обычно такое копирование из потока в поток делается через channels.

Если неохота сильно заморачиваться берите Apache Commons - там есть метод copy, который копирует из потока в поток через внутренний буфер (размер можно задавать) - реализован через java.nio.channels

READ ALSO
Как сделать war файл в IntelliJ IDEA

Как сделать war файл в IntelliJ IDEA

Опишите подробно шаги пожалуйста, просто пустой проект, от начала(создания) до деплоя!

567
Поддерживается ли java 8 в андроиде ниже 7?

Поддерживается ли java 8 в андроиде ниже 7?

Андроид поддерживает java 8 добавлением в gradle suporta 18

181
Обновление данных в RecyclerView javarx

Обновление данных в RecyclerView javarx

У меня есть RecyclerView и он наполнен данными, как мне сделать так ,что если я получаю новые данные с сервера, я, незаметно для пользователя, оставался...

239