2017-09-14 5 views
-1

zlibでC++を使って.rarファイルをフォルダに展開したいと思います。C++はzlib.hを使ってwinrarフォルダを抽出します

マイコード:

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を返しに行きます。

私のアウトファイルを見ると、出力をフォルダに入れたいと思っています。

どうすればいいですか?

ThecCodeあなたは、フォルダを開くためにのみファイルをfopen()を使用することはできません http://www.codeguru.com/cpp/cpp/algorithms/compression/article.php/c11735/zlib-Add-Industrial-Strength-Compression-to-Your-CC-Apps.htm

おかげ

+0

zlibはrarファイルを扱いますか?私は.gzファイルを期待しますが、rarは期待しません。 – drescherjm

+0

これはrarファイルではありません。 – PhyToniC

+0

gzipファイルの場合、なぜ 'a.rar'という名前になりますか?ちょうど悪い例? – drescherjm

答えて

0

からです。したがって、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 

つまり、ZARibライブラリを使ってRARアーカイブを処理することはできません。 ZLibとGZipファイルのみをサポートしています。 WinRAR、7-Zipなどで提供されているようなRARを実際にサポートするライブラリが必要です。

関連する問題