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