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