압축해제 프로그램 제작 

  • 이제 압축 해제 프로그램을 제작해보자.
  • 여기서는 그냥 무압축된 zip파일을 해제해 보도록하겠다.
  • 앞서 3번째 강좌 ( http://fehead.tistory.com/164 )에서 zip localheader file을 이용한 파일 리스트 보기 소스를 기억하는가?
  • 거기 파일리스트를 출력하는 바로위에 아래 한줄만 추가해보자. 

        // 추가된소스 한줄
        unzip(filename, data, l.compressed_size);

        // 원래 소스
        printf("%s\tCompressed size:%u\t Uncompressed size:%u\n",
                filename, l.compressed_size, l.uncompressed_size);

  • 자 이제 위 내용을 main 함수위에 코딩하면된다. 

// 압축파일 해제

void unzip(const char * filename, const char * data, ulong size)
{
    // 파일을 연다.
    FILE *  file = fopen(filename, "w");
    if(file == 0)
    {
        perror("fopen:");
        return;
    }

    // 파일에 데이터를 쓴다.
    fwrite(data, 1, size, file);

    // 파일을 닫는다.
    fclose(file);
}



# 컴파일
$ gcc -o tunzip tunzip.challo


# 테스트를 하기 위해 임시 디렉토리 생성
$ mkdir tmp

# test.zip 파일과 방금 만든 프로그램을 임시 디렉토리로 복사.
$ cp test.zip tunzip tmp

# 임시 디렉토리로 이동
cd tmp
$ ls -l
합계 12
-rw-r--r-- 1 fehead users  334  8월 18 18:18 test.zip
-rwxr-xr-x 1 fehead users 6446  8월 18 18:18 tunziphallo

# 프로그램 실행
$ ./tunzip 
aa.txt  Compressed size:16       Uncompressed size:16
bb.txt  Compressed size:16       Uncompressed size:16

# 압축 풀린것 확인.
$ ls -l
합계 20
-rw-r--r-- 1 fehead users   16  8월 18 18:18 aa.txt
-rw-r--r-- 1 fehead users   16  8월 18 18:18 bb.txt
-rw-r--r-- 1 fehead users  334  8월 18 18:18 test.zip
-rwxr-xr-x 1 fehead users 6446  8월 18 18:18 tunzip

# 내용물 확인.
$ cat aa.txt
0123456789ABCDEF


  • 압축 해제 프로그램을 작성했다.. 와!!!
  • 몇 강좌후에 진짜 압축된 파일도 한번 압축해보자. 

  • 다음강좌는 파일을 무압축으로 zip파일을 만들어보는것을 해보도록하자.

     전체소스는 아래 첨부파일을 참고 하세요. 
    압축파일
     
    소스
     

+ Recent posts