如何找到gzip文件为空的压缩文件

| 如何使用Perl查找gzip文件为空 当我解压缩它的空文件时,a.txt.gz 如何找到压缩gz是空的?     
已邀请:
        您无法直接获取未压缩文件的大小,但可以使用seek来查找它。从文件中创建一个对象,然后尝试搜索第一个字节。如果可以搜索,则文件大小至少为1个字节,否则为空。
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Uncompress::Gunzip;
use Fcntl qw(:seek);

my $u = IO::Uncompress::Gunzip->new(\'readme.gz\');
if ( $u->seek(1, SEEK_CUR) ) {
    print \"Can seek, file greather than zero\\n\";
}
else {
    print \"Cannot seek, file is zero\\n\";
}
    
        您可以使用Perl 5.10及更高版本随附的IO :: Compress :: Gzip(或通过CPAN下载)。并使用它来读取文件。 但是,您只需要对文件进行统计即可,然后简单地查看它是否仅包含26个字节,因为一个空文件仅包含26个字节的标头。 我想这完全取决于您要执行的操作。您只是在尝试确定压缩文件是否为空,还是打算先读取并解压缩?如果是前者,最简单的是
stat
。如果是后者,请使用
IO::Compress::Gzip
模块而不是一堆
system
命令来调用
gzip
IO::Compress::Gzip
随附所有Perl 5.10及更高版本,因此这是处理Zip的默认方式。     
        要检查压缩的tar文件的内容,请使用
tar -ztvf file.tgz
要列出.gz文件的内容,请使用
gzip --list file.gz
将其包装在perl中,并检查输出中的“ 8”字段
$ gzip --list fjant.gz 
         compressed        uncompressed  ratio uncompressed_name
                 26                   0   0.0% fjant
    

要回复问题请先登录注册