zzip と minizip でファイルを解凍します

zzipとminizipを使ったファイルの解凍は手順通りに行う必要があります

  1. まず、zzip と minizip をお使いのシステムにインストールする必要があります。公式 Web サイトからソース コードをダウンロードし、提供される手順にしたがってインストールできます。または、apt、yum、brew などのパッケージ マネージャーを使用して、2 つのソフトウェア パッケージをインストールすることもできます。
  2. zzipライブラリを使用してファイルを展開するサンプルコードを以下に示します。
#include <stdio.h>
#include <zzip/zzip.h>
int main() {
ZZIP_DIR* dir = zzip_dir_open("path/to/your/archive.zip", 0, 0);
if (!dir) {
printf("Failed to open archive\n");
return 1;
}
ZZIP_DIRENT dirent;
while (zzip_dir_read(dir, &dirent)) {
if (!dirent.d_name) {
break;
}
char* filepath = zzip_dir_alloc(dir, dirent.d_name, 0);
if (!filepath) {
printf("Failed to allocate memory\n");
return 1;
}
ZZIP_FILE* file = zzip_file_open(dir, filepath, 0);
if (!file) {
printf("Failed to open file: %s\n", dirent.d_name);
return 1;
}
// 读取文件内容或进行其他操作...
zzip_file_close(file);
zzip_mem_entry_free(filepath);
}
zzip_dir_close(dir);
return 0;
}
  1. 以下に、minizipライブラリを使用したファイル解凍のコード例を示します。
#include <stdio.h>
#include <minizip/unzip.h>
int main() {
unzFile zipfile = unzOpen("path/to/your/archive.zip");
if (!zipfile) {
printf("Failed to open archive\n");
return 1;
}
unz_global_info global_info;
if (unzGetGlobalInfo(zipfile, &global_info) != UNZ_OK) {
printf("Failed to get global info\n");
unzClose(zipfile);
return 1;
}
for (uLong i = 0; i < global_info.number_entry; ++i) {
unz_file_info file_info;
char filename[256];
if (unzGetCurrentFileInfo(zipfile, &file_info, filename, sizeof(filename), NULL, 0, NULL, 0) != UNZ_OK) {
printf("Failed to get file info\n");
unzClose(zipfile);
return 1;
}
if (unzOpenCurrentFile(zipfile) != UNZ_OK) {
printf("Failed to open file: %s\n", filename);
unzClose(zipfile);
return 1;
}
// 读取文件内容或进行其他操作...
unzCloseCurrentFile(zipfile);
if (i + 1 < global_info.number_entry) {
unzGoToNextFile(zipfile);
}
}
unzClose(zipfile);
return 0;
}

上記の2つのサンプルコードで、”path/to/your/archive.zip” をアーカイブを解凍したいファイルパスに置き換えてください。また、あなたの要望に応じて、ファイル内容を適切に処理することができます。たとえば、ファイル内容を読み取ったり、他のファイルに書き込んだりします。

なお、ここに示すサンプルは、解凍の基礎的な機能のみを網羅しています。より高度な機能が必要な場合は、それぞれzzipとminizipのドキュメントやサンプルコードを参照してください。

bannerAds