Как определить тип сжатия, используемый в файле? (если не указано расширение файла)
Как определить тип сжатия, используемый в файле? (предполагая, что .zip,.gz,.xz или любое другое расширение не указано).
Эта информация хранится где-то в заголовке этого файла?
Ответ 1
Вы можете определить, что он, вероятно, будет одним из этих форматов, просмотрев первые несколько байтов. Затем вы должны проверить, действительно ли это один из них, используя проверку целостности из связанной с этим утилиты для этого формата или, фактически, приступить к распаковке.
Вы можете найти форматы заголовков в описаниях:
описание формата zip (.zip), начинается с 0x50, 0x4b, 0x03, 0x04 (если пусто - тогда последние два равны 0x05, 0x06 или 0x06, 0x06 )
описание формата zlib (.zz), начинается с (в битах) 0aaa1000 bbbccccc, где ccccc выбирается так, что первый байт времени 256 плюс второй байт кратное 31.
compress (.Z) начинается с 0x1f, 0x9d
bzip2 (.bz2) начинается с 0x42, 0x5a, 0x68
Ответ 2
Если вы на Linux-сервере, просто используйте команду "файл".
$ mv foo.zip dink
$ file dink
dink: gzip compressed data, from Unix, last modified: Sat Aug 6 08:08:57 2011,
max compression
$
Ответ 3
Как альтернатива проверке заголовка файла вручную, вы можете использовать некоторую полезность, такую как TrID. Ссылка указывает на версию кросс-платформенной командной строки; для Windows тоже есть GUI.