Mam kilka absurdalnie dużych plików (wiele gigabajtów), które mają naprawdę wysoki współczynnik kompresji (1: 200 lub lepszy). Muszę je przetworzyć i chciałbym chociaż trochę oszacować postęp. Z tego powodu chciałbym znać rozmiar pliku wewnątrz .gz, więc mogę go porównać z tym, co już wyciągnąłem.Jak powiedzieć w Perlu, jaki jest rozmiar pliku wewnątrz archiwum gzip bez rozpakowywania całego pliku?
Ponieważ jednak rozpakowywanie całego pliku z góry za każdym razem jest dość wygórowane i jest stratą czasu, chciałbym określić rozmiar bez robienia tego.
Wiem, że to możliwe. Mogę po prostu otwierać pliki gzip za pomocą Total Commander, a wtyczka przeglądarki pokaże mi odpowiedni rozmiar. (Wiem, że to nie jest rozpakowywanie, ponieważ pokazuje mi natychmiast rozmiar, co nie byłoby możliwe z plikiem o pojemności 10 GB w gzipie.)
Prawdopodobnie istnieje kilka pól nagłówka, które zawierają te informacje.
Jednak przeglądając dokumenty różnych modułów CPAN nie mogłem znaleźć niczego, co pasowałoby do rachunku. IO::Uncompress::Gunzip pozwala mi uzyskać w nagłówku , ale nie zawiera żadnych informacji o rozmiarze pliku.
Wszelkie sugestie?
masz rację - nie ma pole ISIZE, zobacz tutaj szczegóły: http://www.gzip.org/zlib/rfc- gzip.html # header-trailer –
Hmm, więc chyba nie ma na to API Perla, moim jedynym odwołaniem jest ręczne odczytanie ostatnich czterech bajtów pliku? – Mithaldu
Szybkim i brudnym rozwiązaniem byłoby przeanalizowanie danych wyjściowych 'gzip -list'. – Ether