Java 如何在GZIP中获取TAR的名称以及TAR的数量
我想知道是否有Java API可以获取GZIP文件中TAR文件的名称以及其中TAR文件的数量。(不确定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
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。