我想使用带有zlib的c ++将.rar文件解压缩到一个文件夹。
我的代码:
int main (){
gzFile infile = gzopen("C:\\Users\\Nico\\Desktop\\a.rar", "rb");
FILE *outfile = fopen("C:\\Users\\Nico\\Desktop\\ToThisFolder", "wb");
if (!infile || !outfile) {
return -1;
}
char buffer[128];
int num_read = 0;
while ((num_read = gzread(infile, buffer, sizeof(buffer))) > 0) {
fwrite(buffer, 1, num_read, outfile);
}
gzclose(infile);
fclose(outfile);
}
如果我运行代码,我的程序总是返回-1,因为他不接受输出文件。
如果查看我的outfile,我想将输出放到一个文件夹中。
我该怎么做?
由于
答案 0 :(得分:0)
您无法使用fopen()
打开文件夹,只能打开文件。因此outFile
为NULL。
要将RAR(或任何其他存档格式)提取到文件夹,您必须打开存档并枚举其存储的文件,将每个文件单独提取到单独的打开文件中。
open archive
for (each file in archive)
{
create output file
read archive file data, write to output file
close output file
}
close archive
话虽如此,您无法使用ZLib库来处理RAR存档。它仅支持ZLib和GZip文件。您需要一个实际支持RAR的库,例如WinRAR,7-Zip等提供的库。