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
'programing' 카테고리의 다른 글
Android Gradle 플러그인 0.7.0: "APK 패키징 중 파일 중복" (0) | 2023.11.04 |
---|---|
활성 셀 옆에 사용자 양식을 정렬하려면 어떻게 해야 합니까? (0) | 2023.11.04 |
범위가 분리된 지시어에 ng-show를 사용하는 방법 (0) | 2023.11.04 |
사용자 지정 게시물 유형 및 범주 (0) | 2023.11.04 |
SQL 로더 오류: "변수 길이 필드가 최대 길이를 초과합니다." (0) | 2023.11.04 |