Можем ли мы добавить несколько данных в bufferedoutputStream? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть данные из 3 файлов в переменной ByteArrayOutputStream.Но когда я пытаюсь передать его через BufferedOutputStream, он отправляет данные только для последнего файла.

byte [] finalData = new byte[64000];
finalData = outputStream.toByteArray();     
output.write(finalData, 0, finalData.length);

Он как-то перезаписывает предыдущие данные для 2 файлов.

1 Ответ

0 голосов
/ 12 декабря 2018

Переменная ByteArrayOutputStream.Но когда я пытаюсь передать его через BufferedOutputStream

, я предлагаю записать файлы непосредственно в BufferedOutputStream, чтобы уменьшить количество копий памяти.

он отправляет данные только за последниеfile.

Скорее всего, вы будете открывать и закрывать файл несколько раз, каждый раз перезаписывая файл.Вы можете добавить файл, но самый эффективный способ - это запись непосредственно в файл.

Примечание: чтобы прочитать файл, вам нужен какой-то способ определить, где файл начинается и заканчивается.Один из подходов состоит в том, чтобы записать индекс в конец файла (например, как это делает ZIP), или записать второй файл, который имеет смещения, или записать длину в начало добавленного сообщения.Если это текстовый формат, у вас может быть другой способ определить, где он начинается / заканчивается.

...