Запись tar файла неизвестного (большого) размера в Java
Я хотел бы написать большой поток неизвестного размера в tar файл на Java. Я знаю, что у Apache есть библиотека commons compress, которая обрабатывает файлы tar, но они требуют, чтобы я знал размер заранее. Рассмотрим Apache собственный example:
TarArchiveEntry entry = new TarArchiveEntry(name);
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();
Я буду знать размер записи после того, как напишу ее, но не раньше. Не существует способа, которым я могу написать контент, и когда я закончу размер, затем записывается в заголовок?
Ответы
Ответ 1
В итоге я принял jtar и изменил его, поэтому вам не нужно указывать размер до тех пор, пока вы не напишете. Кажется, нет пакета, который делает это изначально... Я настроил issue, который запрашивает это изменение. К сожалению, для этого потребовалось много уродливого кода и создания моего собственного RandomAccessFileInputStream(), который непригоден для загрузки патча.
Ответ 2
Если у вас есть только один текстовый файл, который можно добавить, вы можете использовать метод setSize (long) и установить размер записи.
где данные - это строка, которую вы хотите загрузить.
long size=data.getByte().length;
TarArchiveEntry entry = new TarArchiveEntry("sample.txt");
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();