Java 获取总的TAR内容大小(以字节为单位)

Java 获取总的TAR内容大小(以字节为单位),java,tar,Java,Tar,有没有一种方法可以发现tar.gz中所有文件的总未压缩大小,而无需像下面这样遍历TarArchiveInputStream中的所有TararchiveEntry TarArchiveInputStream tin = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream("/path/to/my.tar.gz"))); TarArchiveEntry ten; long size = 0; while( (ten =

有没有一种方法可以发现tar.gz中所有文件的总未压缩大小,而无需像下面这样遍历TarArchiveInputStream中的所有TararchiveEntry

TarArchiveInputStream tin = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream("/path/to/my.tar.gz")));
TarArchiveEntry ten;
long size = 0;
while( (ten = tin.getNextTarEntry()) != null) {
    size += ten.getSize();
}

tar不会压缩文件,所以我想如果你只读取压缩的内容大小,你就会得到正确的信息。。。或者非常接近(可能tar会在其大小中包含文件路径/名称)
.tar
文件没有任何类型的头来描述整个归档。每个文件都有一个头,后面是该文件的内容;要获取第二个文件的信息,您必须跳过第一个文件的内容,依此类推,因此基本上您必须查看每个文件的标题。没有捷径。如果您查看解压缩的
.tar
的大小,它将包括所有头的大小以及每个文件之间的填充字节,以便对齐,这可能不是您想要的。我不需要确切的大小,只要足够接近即可。它是针对hadoop中的tar.gz输入格式的,我想以读取所有文件的未压缩字节总数的总字节数来报告文件的进度。焦油本身有压缩作用吗?因为如果不是的话,也许我可以看看GZIP头?没关系,看起来这是不可能的。通过读取最后4个字节,可以获得gzip文件的未压缩大小