我想用Java创建一个tar存档。我有不断创建的文件,我希望工作线程从队列中引用这些文件并将它们复制到存档中。
我尝试使用Apache Compression库的TarArchiveOutputStream来执行此操作,但我不希望在整个程序期间保持存档打开(因为除非我最终确定存档,否则它可能会损坏 - 所以我宁愿追加批处理),我还没有找到一个很好的方法来附加到他们的库的现有tar存档(他们有“ChangeSetPerformer”类,但它基本上只是创建一个新的tar,需要复制旧的完全,这对我不利,表现明智。)
我还需要库没有存档大小的限制(即4g左右是不够的),而且我宁愿避免实际压缩存档。
任何建议都将不胜感激! 谢谢。
答案 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,布尔值)
这使您可以在不使用用户级别的流的情况下向文件添加条目。我不知道文件大小 - 但测试这方面是一件简单的事情。