回答
您不能直接獲取未壓縮文件的大小,但可以使用查找。從文件創建一個對象並嘗試尋找第一個字節。如果您可以查找,那麼您的文件至少有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";
}
要檢查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
混合perl和shell通常是一個壞主意,因爲結果文件很難讀取。 – jeremiah 2013-01-01 14:01:38
你可以使用IO::Compress::Gzip附帶的Perl 5.10和ABO (或通過CPAN下載)。並用它來讀取文件。
但是,您只需在文件上執行stat並查看它是否僅包含26個字節,因爲空文件僅包含26個字節的標頭。
我想這只是取決於你正在嘗試做什麼。你只是試圖確定一個gzip文件是否爲空,或者你打算先閱讀並解壓縮它?如果是前者,stat
將是最容易的。如果是後者,請使用IO::Compress::Gzip
模塊,而不是使用一堆system
命令來調用gzip
。 IO::Compress::Gzip
附帶5.10及更高版本的所有Perl發行版,所以它是處理Zip的默認方式。
您無法檢查文件大小並將其與「26」進行比較。壓縮文件的文件大小取決於文件名。 – 2011-05-27 15:02:27
是的,它不完全是26個字節,但是如果它在25到40個字節之間,它肯定是空的。 – 2011-05-27 15:08:19
壓縮之前的完整文件名位於標題中。如果你使用gzip長文件名,它會和文件名+頭一樣大。如果您的文件名超過40個字節,它可以輕鬆超過40個字節。 – 2011-05-27 15:22:29
- 1. 如何壓縮GZip格式的文件?
- 2. 與django_compressor壓縮文件以gzip壓縮
- 3. Hadoop gzip壓縮文件
- 4. node.js如何流化22GB gzip壓縮文件解壓縮
- 5. 如果gzip文件是通過組合多個gzip文件創建的,Chrome不會解壓縮gzip文件
- 6. 如何解壓gzip文件
- 7. Apache:無法找到htaccess文件來啓用gzip壓縮
- 8. C#解壓.GZIP到文件
- 9. 如何檢查文件是否被gzip壓縮?
- 10. 如何判斷文件是否被gzip壓縮?
- 11. 在.htaccess文件中啓用gzip壓縮
- 12. 在JavaScript文件上強制GZIP壓縮
- 13. Appengine提供gzip壓縮文件
- 14. 異步解壓縮gzip文件
- 15. NIO GZIP壓縮和複製文件
- 16. 與gzhandler PHP爲4KB文件gzip壓縮
- 17. 如何將Hadoop目錄壓縮到單個gzip文件?
- 18. 用GZip,Deflate壓縮javascript文件的最佳組件是什麼?
- 19. 由gzip壓縮的小文件比大文件大?
- 20. 從PCL壓縮gzip/zip文件的文件夾
- 21. 空氣解壓縮文件
- 22. 如何使用Gzip(Deflate)創建高度壓縮的文件?
- 23. 如何下載,解壓縮和處理OCaml中的gzip文件?
- 24. 我如何解壓縮自定義管道中的gzip文件
- 25. 壓縮和解壓縮與每個「壓縮,gzip,bzip2和zip」文件
- 26. 如何在.htaccess文件中禁用某些媒體文件的Apache gzip壓縮?
- 27. 如何使用Ant和Gzip壓縮文件夾中的每個文件
- 28. 如何使用GZipStream類壓縮GZip文件中的多個文件?
- 29. 如何直接將csv文件壓縮成zip壓縮文件?
- 30. 如何將未壓縮文件夾視爲壓縮文件?
這是最好的方法。我沒有想到使用Fcntl並進行尋找。 – 2011-05-31 16:30:36