I have a C / C++ program which needs to read in a file that may or may not be gzip compressed. I know we can use gzread() from zlib to read in both compressed and uncompressed files - however, I want to use the zlib functions ONLY if the file is gzip compressed (for performance reasons).
So is there any way to programatically detect or check if a certain file is gzipped from C / C++?
Usually though, you just look at the file extension, like on Windows. Like . ZIP means ZIP file, . gz means gzip.
Verify Your Compression In your browser: In Chrome, open the Developer Tools > Network Tab (Firefox/IE will be similar). Refresh your page, and click the network line for the page itself (i.e., www.google.com ). The header “Content-encoding: gzip” means the contents were sent compressed.
Most compressed files have extensions indicating the format like . zip, . rar, . 7z, etc.
The GZ file format is commonly used as a compression format for Linux and Unix operating systems.
There is a magic number at the beginning of the file. Just read the first two bytes and check if they are equal to 0x1f8b.
Do you prefer false positives, false negatives, or no false results at all (there goes performance down the drain...)?
The RFC 1952: GZIP file format specification version 4.3 states the first 2 bytes (of each member and therefore) of the file are '\x1F' and '\x8B'. Use that for a first check that can result in false positives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With