XUnzip

소개

이 소스는 표준 ZIP 파일 포맷의 압축을 해제하는 소스입니다. ZIP 파일은 Deflate 압축알고리즘을 지원하는데, Deflate 압축 알고리즘의 압축 해제를 지원하기 위해서 XInflate 소스를 사용하였습니다.

다운로드

소스 이력

2010/05/14 개발 시작

2010/05/25 최초 공개(1.0)

설명

ZIP 파일은 그 압축 알고리즘과 포맷이 공개된 이 여러가지 이유로 압축포맷의 표준으로 인정받고 있는 포맷입니다. 최근에는 처음 공개된 당시의 한계점을 극복하기 위해서 ZIP64(2G 이상 대용량 파일 지원), LZMA 알고리즘(압축률 향상) AES 암호 알고리즘(좀더 복잡한 암호 알고리즘) 등 다양한 기능이 포맷에 계속 추가되고 있습니다. 하지만 여기 공개된 소스는 최초 표준에서 정의된 간단한 형태의 ZIP 포맷만을 지원하도록 되어 있습니다.

실행 화면

본 압축파일에는 XUnzip 소스 및 ZIP 파일의 압축 해제를 테스트해볼 수 있는 xunziptest 프로그램이 예제 소스로 포함되어 있습니다. 아래 그림은 xunziptest 을 이용해서 zip 파일의 압축을 해제하는 모습입니다.

 

이런건 왜 만들었나?

이미 압축시대 를 개발하면서 풀스펙의 ZIP 포맷을 지원하는 모듈을 개발하였지만, 이 압축 해제 모듈은 너무 덩치가 크고 사용도 복잡합니다. 최근 필요에 의해서 간단하게 ZIP 파일의 압축을 해제하는 모듈을 만들 필요성을 느끼면서 이 소스를 개발하기 시작하였습니다.

어떤곳에 활용이 가능한가?

이 소스는 압축 해제시 진행 상황을 보여주는 인터페이스를 제공하지 않습니다. 따라서, 범용 압축 해제 프로그램등에 바로 사용하는것이 불가능합니다. 이 소스는 프로그램 내에서 ZIP 파일을 데이터 파일로 사용하는 경우에 매우 유용합니다.

실제로 이 소스는 꿀뷰의 스킨파일 처리에 적용이 되었으며 아주 만족스럽게 사용을 하고 있습니다. 보통 스킨 파일의 경우 여러개의 파일로 구성되어 있기 때문에 하나의 스킨 파일로 만들기 위해서 (확장자는 임의의 확장자를 사용해도) ZIP 포맷으로 압축하는 경우가 대부분인데 (미디어 플레이어, WINAMP, 곰플레이어...) 이런 경우에 이 소스를 사용하면 매우 편리합니다.

왜냐하면, 스킨 파일내의 이미지 파일등을 처리할때, XINFLATE 는 압축 해제를 파일이 아닌 메모리 버퍼에 바로 압축을 풀어줄 수 있기 때문이죠.

이외에도 원본 zip 파일의 입력을 하드 디스크 내의 파일이 아닌 메모리 버퍼를 사용하는것도 가능합니다. 이를 이용하면 프로그램에 사용할 데이터를 리소스나 실행파일 내에 zip 파일로 압축해서 저장하는것도 가능해집니다.

장점

  • 사용이 간단하다.
  • 필요한 파일이 많지 않다. (4개)
  • 메모리 입력 스트림을 지원한다.
  • 메모리 출력 스트림을 지원한다.

단점

  • 범용적으로 사용하도록 설계되어 있지 않다.
  • 속도가 zlib를 사용했을때보다 약간 느리다.
  • 암호화 알고리즘을 지원하지 않는다.

참고 링크

본 라이브러리는 다음과 같은 자료를 참고하였습니다.