2010. 5. 14. 00:11

ZIP File Format Specification

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


안녕하세요 Geeks_Company입니다.

여기서 설명 드릴 자료는 Zip이라는 파일 압축 확장자에 관한 세부 사항 입니다.

원문 참조 링크는 http://www.pkware.com/documents/casestudies/APPNOTE.TXT  이며 저작권을 침해 할 경우 메일 또는 댓글로 알려 주셨음 합니다.

이글의 목적은 Zip의 파일 포멧으로 저장된 파일중 deflate 으로 압축을 풀 수 있는 자료에 관해서만 설명하기 위해서 필요 한 부분을 따로 적어 놓습니다.

V. General Format of a .ZIP file   : Zip파일에 대한 일반적인 포멧
--------------------------------
... (생략)

    [local file header 1]    :  헤더 1
    [file data 1]                : 압축된 데이터 1
    [data descriptor 1]      : 데이터의 설명 1

... (생략)



A.  Local file header:

        local file header signature     4 bytes  (0x04034b50)     :  Zip 해더 시그니처
        version needed to extract       2 bytes                        : 압축 풀기 위해서 필요한 버전
        general purpose bit flag        2 bytes                          : 일반적 목적의 bit flag
        compression method              2 bytes                       : 압축시 사용된 방식
        last mod file time              2 bytes                             : 마지막으로 변경된 파일 시간
        last mod file date              2 bytes                             : 마지막으로 변경된 파일 날자
        crc-32                          4 bytes                                 : crc-32 체크를 위한 값
        compressed size                 4 bytes                          : 압축된 data의 용량
        uncompressed size               4 bytes                         : 압축이 풀릴시 용량
        file name length                2 bytes                              : 압축된 파일의 이름 길이
        extra field length              2 bytes                                : 여유분 길이

        file name (variable size)                                             : 파일 이름
        extra field (variable size)                                             : 여유분 필드


참고로 저는 압축을 할경우 .zip 파일 자체가 압축된 데이터 인지 알았는데, 알고 보니 파일 확장 자 이며,

그 안에 압축된 데이터를 포함하는 것이었군요. 


  B.  File data : 파일 데이터

      Immediately following the local header for a file
      is the compressed or stored data for the file.
      The series of [local file header][file data][data
      descriptor] repeats for each file in the .ZIP archive.

로컬 헤더 바로 뒤에 따라 나오는 정보가 압축 또는 단순 저장된 데이터 이며,
 [local file header][file data][data descriptor] 형태의 저장이 반복적으로 .ZIP 안에서 사용 됩니다.



Zip 파일을 풀고 싶을 경우,

즉, 로컬 파일 헤더 마지막 부분 + 압축된 데이터 사이즈 만큼 읽어 들인후 , 압축 방식에 사용된 method를 찾아서 적용 시키면 압축을 풀 수 있습니다.



'관련자료' 카테고리의 다른 글

Zip에 사용된 Deflate Compressed Data Format 의 세부 사항  (2) 2010.07.14
압축 풀때 사용되는 Deflate 알고리즘.  (0) 2010.06.06
LZ77  (0) 2010.05.13
Move-to-Front transform  (0) 2010.05.06
Burrows–Wheeler transform  (0) 2010.05.06