15

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

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

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

4

2 回答 2

1

我最终采用了jtar并对其进行了修改,因此您在编写之前不必指定大小。似乎没有本机执行此操作的包...我设置了一个请求此更改的问题。不幸的是,它需要大量丑陋的代码并创建我自己的 RandomAccessFileInputStream(),这不适合上传补丁。

于 2012-05-09T13:04:00.293 回答
1

如果您只有一个要添加的文本文件,那么您可以使用 setSize(long) 方法并设置条目的大小。

其中 data 是你想要被 tarred 的字符串。

long size=data.getByte().length;
TarArchiveEntry entry = new TarArchiveEntry("sample.txt");
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();
于 2016-09-13T06:48:57.063 回答