【问题标题】:Random file access from a tar archive in java从java中的tar存档随机文件访问
【发布时间】:2021-06-21 13:04:13
【问题描述】:

如何在 java 中从 tar 存档中进行随机文件访问?使用 apache-commons-compress tarArchiveInputStream 没有方法可以根据其 tarArchiveEntry 名称获取特定文件。对于文件对象(bytes[])的每个查询,每次都需要遍历整个 tar 文件。在这种情况下如何使用 tar 归档进行高效编程?

【问题讨论】:

  • 与任何其他工具一样:提取条目,处理它,使用新内容重新创建存档。
  • 这样会有效吗?如果 tar 文件包含 10 万个项目,那么提取 tar 会产生巨大的 IO 成本,然后需要再次删除提取的目录。这是一种优化的方法吗?
  • 您不需要解压所有文件。但是,tar 存档的工作方式是,在找到特定条目之前无法遍历文件。按照它们实际存储的顺序处理它们可以避免这种情况。但是,您仍然必须摆脱拥有随机访问文件的要求。
  • 所以问题是,假设我以前面的示例查找 1Lakhs 条目的 tar,通常的方法是在本地目录中提取 tar 内容,然后从那里读取文件。现在,如果这是用户桌面应用程序,用户可能没有足够的存储空间。

标签: inputstream tar java-io apache-commons-compress


【解决方案1】:

请参考stackoverflow中的这个早期案例: How uncompress a specific file from a TAR using apache commons?

或 为了更好地理解,请点击此链接: Apache commons

【讨论】:

  • 这不是我要找的。我正在寻找更重要的解决方案。
猜你喜欢
  • 2010-09-17
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2013-10-16
相关资源
最近更新 更多