我想用Java中的tar文件写一个未知大小的大流。我知道Apache有commons compress library handles tar files,但是他们要求我提前知道它的大小。考虑Apache自己的example:
TarArchiveEntry entry = new TarArchiveEntry(name);
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();
我写完后会知道条目的大小,但之前不会知道。是不是我可以写内容的方式,当我完成大小然后写入标题?
答案 0 :(得分:1)
我最终选择了jtar并对其进行了修改,因此您不必在写完之后指定大小。似乎没有包本可以原生地执行此操作...我设置了issue请求此更改。不幸的是,它需要很多丑陋的代码并创建我自己的RandomAccessFileInputStream(),这不适合上传补丁。
答案 1 :(得分:1)
如果您只添加了一个文本文件,则可以使用setSize(long)方法并设置条目的大小。
其中data是您希望被涂焦的字符串。
long size=data.getByte().length;
TarArchiveEntry entry = new TarArchiveEntry("sample.txt");
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();