【问题标题】:How do I append files to a .tar archive in Java?如何将文件附加到 Java 中的 .tar 存档?
【发布时间】:2012-04-03 22:58:37
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java apache compression archive tar


    【解决方案1】:

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

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

    【讨论】:

    • 我从文章的那部分理解是,实际上很容易将单个文件添加到 tar 存档而不复制它,因为您可以将其粘贴到最后而不更新 TOC。
    • 为什么我需要随机访问,如果我只想追加(不关心文件的顺序)?另外,您建议我改用什么其他格式?
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多