[c++] 파일 및 디렉토리 압축하기
파일 압축하기
파일을 압축하는 것은 주로 zlib 라이브러리를 사용하여 수행됩니다. zlib은 C++에서 압축 및 압축 해제를 지원하는 강력한 라이브러리입니다. 아래는 파일을 zlib을 사용하여 압축하는 간단한 예제 코드입니다.
#include <iostream>
#include <fstream>
#include <zlib.h>
int main() {
const char* sourceFile = "input.txt";
const char* compressedFile = "output.gz";
const int bufferSize = 128 * 1024;
unsigned char buffer[bufferSize];
gzFile file = gzopen(compressedFile, "wb");
FILE* source = fopen(sourceFile, "rb");
int bytesRead = 0;
while ((bytesRead = fread(buffer, 1, bufferSize, source)) > 0) {
gzwrite(file, buffer, bytesRead);
}
gzclose(file);
fclose(source);
return 0;
}
위의 코드는 input.txt 파일을 output.gz 파일로 압축하는 예제입니다. 해당 예제를 실행하면 input.txt 파일이 output.gz로 압축됩니다.
디렉토리 압축하기
디렉토리를 압축하는 것은 libzip 라이브러리를 사용하여 수행할 수 있습니다. libzip은 C++에서 디렉토리 및 파일을 압축하고 해제할 수 있는 라이브러리입니다. 아래는 libzip을 사용하여 디렉토리를 압축하는 간단한 예제 코드입니다.
#include <iostream>
#include <zip.h>
int main() {
const char* sourceDir = "input_directory";
const char* compressedFile = "output.zip";
zip_t* archive = zip_open(compressedFile, ZIP_CREATE | ZIP_EXCL, nullptr);
zip_source_t* source = zip_source_file(archive, sourceDir, 0, 0);
zip_file_add(archive, "input_directory", source, ZIP_FL_ENC_UTF_8);
zip_close(archive);
return 0;
}
위의 코드는 input_directory 디렉토리를 output.zip 파일로 압축하는 예제입니다.
이처럼 C++을 사용하여 파일 및 디렉토리를 압축하는 방법에는 zlib 및 libzip과 같은 라이브러리를 사용하는 방법이 있습니다. 위의 예제 코드를 참고하여 파일이나 디렉토리를 원하는 방식으로 압축할 수 있습니다.