回答
您不能直接獲取未壓縮文件的大小,但可以使用查找。從文件創建一個對象並嘗試尋找第一個字節。如果您可以查找,那麼您的文件至少有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. NLTK - 的gzip壓縮文件
- 2. 如何壓縮GZip格式的文件?
- 3. 與django_compressor壓縮文件以gzip壓縮
- 4. Hadoop gzip壓縮文件
- 5. 如何修改gzip壓縮文件
- 6. 解析gzip壓縮日誌文件一行行內焦油gzip壓縮文件
- 7. node.js如何流化22GB gzip壓縮文件解壓縮
- 8. 如何在內存中解壓縮GZip壓縮文件?
- 9. 如果gzip文件是通過組合多個gzip文件創建的,Chrome不會解壓縮gzip文件
- 10. 如何解壓gzip文件
- 11. gzip壓縮的文件通過PHP
- 12. 用Zlib壓縮大文件的gzip
- 13. gzip壓縮中的Node.js文件擴展
- 14. Apache:無法找到htaccess文件來啓用gzip壓縮
- 15. C#解壓.GZIP到文件
- 16. Linux上的GZip壓縮文本文件中指定的文件
- 17. 如何判斷文件是否被gzip壓縮?
- 18. 如何檢查文件是否被gzip壓縮?
- 19. 異步解壓縮gzip文件
- 20. django css和js文件gzip壓縮heroku
- 21. 在express js中壓縮文件(gzip)4.4.1
- 22. Appengine提供gzip壓縮文件
- 23. 多CPU核心gzip壓縮大文件
- 24. 與gzhandler PHP爲4KB文件gzip壓縮
- 25. 在解析中Gzip壓縮PDF文件
- 26. NIO GZIP壓縮和複製文件
- 27. 在.htaccess文件中啓用gzip壓縮
- 28. 在JavaScript文件上強制GZIP壓縮
- 29. 如何將Hadoop目錄壓縮到單個gzip文件?
- 30. 用GZip,Deflate壓縮javascript文件的最佳組件是什麼?
這是最好的方法。我沒有想到使用Fcntl並進行尋找。 – 2011-05-31 16:30:36