[c++] 파일 압축 및 해제
파일을 압축하거나 해제하는 작업은 데이터 처리 및 저장에 매우 유용합니다. C++ 프로그램을 사용하여 파일을 압축하고 해제하는 방법을 알아보겠습니다.
파일 압축
C++에서 파일을 압축하기 위해서는 zlib과 같은 라이브러리를 이용할 수 있습니다. zlib은 데이터를 압축 및 해제하는 데 사용되는 라이브러리로, C++에서도 쉽게 활용할 수 있습니다.
아래는 zlib을 사용하여 파일을 압축하는 간단한 예제 코드입니다.
#include <iostream>
#include <zlib.h>
int main() {
const char* input_filename = "input.txt";
const char* output_filename = "output.gz";
const int chunk = 16384;
gzFile out = gzopen(output_filename, "wb");
FILE* in = fopen(input_filename, "rb");
unsigned char buffer[chunk];
int len = 0;
while ((len = fread(buffer, 1, chunk, in)) > 0) {
gzwrite(out, buffer, len);
}
fclose(in);
gzclose(out);
std::cout << "File compressed successfully" << std::endl;
return 0;
}
위 코드는 input.txt
파일을 output.gz
로 압축하는 과정을 보여줍니다.
파일 해제
압축된 파일을 해제하기 위해서는 마찬가지로 zlib을 사용할 수 있습니다. 아래는 압축 해제하는 간단한 예제 코드입니다.
#include <iostream>
#include <zlib.h>
int main() {
const char* input_filename = "output.gz";
const char* output_filename = "restored.txt";
const int chunk = 16384;
gzFile in = gzopen(input_filename, "rb");
FILE* out = fopen(output_filename, "wb");
unsigned char buffer[chunk];
int len = 0;
while ((len = gzread(in, buffer, chunk)) > 0) {
fwrite(buffer, 1, len, out);
}
fclose(out);
gzclose(in);
std::cout << "File decompressed successfully" << std::endl;
return 0;
}
위 코드는 output.gz
파일을 restored.txt
로 해제하는 과정을 보여줍니다.
결론
C++에서 파일을 압축하고 해제하는 것은 zlib과 같은 라이브러리를 사용하여 비교적 간단하게 처리할 수 있습니다. 이를 통해 파일 시스템에서 데이터를 효율적으로 저장하고 전송할 수 있습니다.