【问题标题】:How to get the name of a TAR in a GZIP as well as the number of TARs如何在 GZIP 中获取 TAR 的名称以及 TAR 的数量
【发布时间】:2011-09-17 15:03:39
【问题描述】:

我想知道是否有任何 Java API 可以获取 GZIP 文件中 TAR 文件的名称以及其中 TAR 文件的数量。 (不确定一个 GZIP 中是否允许多个 TAR)

这是我访问 TAR 文件中的文件/目录的方式

    FileInputStream fis = new FileInputStream(new File(sourceFile));
    GZIPInputStream gin = new GZIPInputStream(fis);
    TarInputStream tin = new TarInputStream (gin);

    TarEntry tarEntry = tin.getNextEntry();  

我需要检查是否解压了相应的 TAR 文件,因此我需要有关名称的信息。我还需要确保只有一个 TAR 文件,因此我需要 TAR 的数量。

【问题讨论】:

  • GZIP 压缩文件中只能有一个 .tar。

标签: java gzip tar


【解决方案1】:

尽管 GZIP 文件可能包含一些元信息,包括原始文件名,但实际上对您没有帮助。该文件名在许多情况下无效,因为 gzip(1) 在创建文件时不知道该文件名,因为它不是从文件系统获取数据,而是通过管道文件句柄获取数据。

因此,通常的约定是,gzip 文件的名称与原始文件名相同,附加“.gz”或可选地将“.tar”后缀替换为“.tgz”。

好的一面:一个 GZIP 文件只能包含 一个 数据流(在本例中为文件),因此只有一个 TAR 文件。这当然不包括有人连接多个文件、对结果调用 gzip 并将其命名为“.tar.gz”或“.tgz”的恶意案例。

【讨论】:

    【解决方案2】:

    第二部分的答案是,一个 GZIP 文件只包含一个文件。如果(假设)它确实包含多个文件(tar 或其他文件),则没有简单的方法将它们分开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      相关资源
      最近更新 更多