开发者

How to get the name of a TAR in a GZIP as well as the number of TARs

开发者 https://www.devze.com 2023-04-05 18:41 出处:网络
I was wondering if there is any Java API to get the name of the TAR file in a GZIP file as well as the number of TAR files in it. (Not sure if multiple TARs are a开发者_开发百科llowed in a GZIP)

I was wondering if there is any Java API to get the name of the TAR file in a GZIP file as well as the number of TAR files in it. (Not sure if multiple TARs are a开发者_开发百科llowed in a GZIP)

This is how I access the files/directories in a TAR file

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

    TarEntry tarEntry = tin.getNextEntry();  

I need to check if I'm untarring the appropriate TAR file, so that's why I need the info about the name. I also need to make sure there is only one TAR file, hence I need the number of TARs.


Although GZIP files can contain some metainformation including the original filename that will not help you in reality. That filename is not valid in many cases because gzip(1) did not know the name when creating the file because it got the data not from the filesystem but via a pipe-filehandle.

Therefore the usual convention is, that the name of the gzip-file is the same as the original filname with either ".gz" appended or optionally replacing the ".tar" suffix with ".tgz".

On the good side: A GZIP file can contain only one datastream (aka. file in this case) hence only one TAR file. This of course excludes malicious cases where someone concatenates several files, calls gzips on the result and names it ".tar.gz" or ".tgz".


The answer to the second part is that is that a GZIP file only contains one file. If (hypothetically) it did contain more than one file (tar or otherwise), there would be no easy way to separate them.

0

精彩评论

暂无评论...
验证码 换一张
取 消