programing

gzip 파일이 압축되어 있는지 확인하는 방법은 무엇입니까?

powerit 2023. 11. 4. 13:23
반응형

gzip 파일이 압축되어 있는지 확인하는 방법은 무엇입니까?

압축되거나 압축되지 않을 수 있는 파일로 읽어야 하는 C/C++ 프로그램이 있습니다.zlib의 gzread()를 사용하여 압축 파일과 압축되지 않은 파일 모두에서 읽을 수 있다는 것을 알고 있습니다. 그러나 zlib 기능은 (성능상의 이유로) gzip 압축된 경우에만 사용하고 싶습니다.

그렇다면 C/C++에서 특정 파일이 gzip되어 있는지를 프로그램적으로 감지하거나 확인할 수 있는 방법은 없습니까?

파일의 첫머리에 매직넘버가 있습니다.처음 두 바이트를 읽고 다음과 같은지 확인합니다.0x1f8b.

오탐, 오탐, 오탐 중 어느 것을 선호하십니까? 아니면 오탐이 전혀 없는 것을 선호하십니까? (성능은 고갈됩니다...)

RFC 1952: GZIP 파일 포맷 사양 버전 4.3은 파일의 처음 2바이트는 다음과 같다고 기술합니다.'\x1F'그리고.'\x8B'. 위양성을 초래할 수 있는 첫 번째 검사에 사용합니다.

gzread()를 사용하여 압축 파일과 압축되지 않은 파일을 읽는 것의 성능 차이는 무엇입니까?

어쨌든 파일 압축을 감지하기 위해서는 파일의 첫머리에 있는 매직넘버를 읽을 수 있는데, 이것은1f 8b링크에 따라서

RFC 1951 및 1952에 설명된 서명을 테스트하여 아이디어를 얻을 수 있습니다.GZIP 파일의 경우 두 번째 파일이 해당되며 최종 파일입니다.다른 형식에는 오탐이 있으므로 헤더의 양만큼 그럴듯한 값을 확인해야 합니다.

그냥 zlib 스트림의 경우에는 그것이 다소 더 어렵습니다. 왜냐하면 그것들은 훨씬 더 거짓 긍정의 경향이 있기 때문입니다.하지만 야생에서 혼자서는 거의 마주치지 않을 겁니다.

언급URL : https://stackoverflow.com/questions/6059302/how-to-check-if-a-file-is-gzip-compressed

반응형