Tôi có một loạt các tệp lớn vô cùng (kích thước nhiều gigabyte) có tỷ lệ nén thực sự cao (1: 200 hoặc cao hơn). Tôi phải xử lý chúng và muốn ít nhất là cho thấy một số loại ước tính tiến độ. Vì lý do đó tôi muốn biết kích thước của tập tin bên trong .gz, vì vậy tôi có thể so sánh nó với những gì tôi đã rút ra rồi.Làm thế nào để tôi nói trong Perl kích thước của một tệp trong kho lưu trữ gzip là gì mà không giải nén toàn bộ tệp?
Tuy nhiên, vì việc giải nén toàn bộ tệp trước mỗi lần là khá nghiêm trọng và lãng phí thời gian, tôi muốn tìm ra kích thước mà không làm điều đó.
Tôi biết điều đó là có thể. Tôi chỉ có thể mở tập tin gzip với Total Commander và plugin người xem sẽ cho tôi thấy kích thước phù hợp. (Tôi biết nó không giải nén vì nó cho tôi thấy kích thước ngay lập tức, điều này thực sự không thể thực hiện được với một tệp 10 GB bên trong gzip.)
Có thể có một số trường tiêu đề chứa thông tin đó.
Tuy nhiên, tìm kiếm tài liệu của các mô-đun CPAN khác nhau mà tôi không thể tìm thấy bất kỳ thứ gì phù hợp với hóa đơn. IO::Uncompress::Gunzip cho phép tôi nhận được tại tiêu đề nhưng không chứa bất kỳ thông tin kích thước tệp nào.
Mọi đề xuất?
Bạn đúng - có trường ISIZE, xem tại đây để biết chi tiết: http://www.gzip.org/zlib/rfc- gzip.html # header-trailer –
Hmm, vì vậy tôi đoán trừ khi có API Perl cho điều đó, truy vấn duy nhất của tôi là đọc bốn byte cuối cùng của tệp theo cách thủ công? – Mithaldu
Giải pháp nhanh chóng và bẩn sẽ phân tích đầu ra của 'gzip --list'. – Ether