在 Java 中写入未知(大)大小的 Tar 文件

2022-09-03 16:12:37

我想在Java中将一个未知大小的大型流写入tar文件。我知道Apache有处理tar文件的公地压缩库,但它们需要我提前知道大小。考虑Apache自己的例子

TarArchiveEntry entry = new TarArchiveEntry(name);
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();

在我写完之后,我会知道条目的大小,但在此之前不会。难道没有一种方法可以编写内容,当我完成时,大小将写入标题吗?


答案 1

我最终采用了jtar并对其进行了修改,因此在编写之前不必指定大小。似乎没有软件包可以本地执行此操作...我设置了一个请求此更改的问题。不幸的是,它需要大量的丑陋代码并创建我自己的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();

推荐