Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GZIP中获取TAR的名称以及TAR的数量_Java_Gzip_Tar - Fatal编程技术网

Java 如何在GZIP中获取TAR的名称以及TAR的数量

Java 如何在GZIP中获取TAR的名称以及TAR的数量,java,gzip,tar,Java,Gzip,Tar,我想知道是否有Java API可以获取GZIP文件中TAR文件的名称以及其中TAR文件的数量。(不确定GZIP中是否允许多个TAR) 这是我访问TAR文件中的文件/目录的方式 FileInputStream fis = new FileInputStream(new File(sourceFile)); GZIPInputStream gin = new GZIPInputStream(fis); TarInputStream tin = new TarInputStre

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

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


好的一面是:一个GZIP文件只能包含一个数据流(本例中为aka.file),因此只有一个TAR文件。这当然排除了恶意情况,即有人连接多个文件,对结果调用GZIP并将其命名为“.tar.gz”或“.tgz”。

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

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


好的一面是:一个GZIP文件只能包含一个数据流(本例中为aka.file),因此只有一个TAR文件。这当然排除了恶意情况,即有人连接多个文件,对结果调用GZIP并将其命名为“.tar.gz”或“.tgz”。

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

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

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