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

时间:2011-05-27 14:04:32

标签: perl gzip

如何使用perl

查找gzip文件为空

a.txt.gz当我解压缩它的空

如何找到压缩gz是空的?

3 个答案:

答案 0 :(得分:4)

您无法直接获取未压缩文件的大小,但可以使用搜索功能。从文件创建一个对象,并尝试寻找第一个字节。如果你可以寻找,那么你的文件大小至少为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";
}

答案 1 :(得分:2)

您可以使用Perl 5.10及更高版本附带的IO::Compress::Gzip(或通过CPAN下载)。并使用它来读取文件。

但是,您可以在文件上执行stat,只需查看它是否只包含26个字节,因为空文件只包含26个字节的标题。

我想这完全取决于你想要做什么。你只是想确定一个gzip压缩文件是空的还是你打算读取它并先解压缩?如果是前者,stat将是最简单的。如果是后者,请使用IO::Compress::Gzip模块而不是一堆system命令来调用gzipIO::Compress::Gzip附带所有Perl发行版5.10及更高版本,因此它是处理Zip的默认方式。

答案 2 :(得分:0)

要检查压缩tar文件的内容,请使用

tar -ztvf file.tgz

要列出.gz文件的内容,请使用

gzip --list file.gz

将其包装在perl中并检查输出中的uncompressed字段

$ gzip --list fjant.gz 
         compressed        uncompressed  ratio uncompressed_name
                 26                   0   0.0% fjant