如何将文件附加到Java中的.tar存档?

时间:2012-03-19 12:48:12

标签: java apache compression archive tar

我想用Java创建一个tar存档。我有不断创建的文件,我希望工作线程从队列中引用这些文件并将它们复制到存档中。

我尝试使用Apache Compression库的TarArchiveOutputStream来执行此操作,但我不希望在整个程序期间保持存档打开(因为除非我最终确定存档,否则它可能会损坏 - 所以我宁愿追加批处理),我还没有找到一个很好的方法来附加到他们的库的现有tar存档(他们有“ChangeSetPerformer”类,但它基本上只是创建一个新的tar,需要复制旧的完全,这对我不利,表现明智。)

我还需要库没有存档大小的限制(即4g左右是不够的),而且我宁愿避免实际压缩存档。

任何建议都将不胜感激! 谢谢。

2 个答案:

答案 0 :(得分:2)

你在tar的限制中运行:http://en.wikipedia.org/wiki/Tar_(file_format)#Random_access

因为在没有复制整个存档的情况下很难添加或删除单个文件。

答案 1 :(得分:0)

我使用名为Java Tar的库:http://www.trustice.com/java/tar/

这对我有用。在该包中,请查找:

http://www.gjt.org/javadoc/com/ice/tar/TarArchive.html#writeEntry(com.ice.tar.TarEntry,布尔值)

这使您可以在不使用用户级别的流的情况下向文件添加条目。我不知道文件大小 - 但测试这方面是一件简单的事情。