1

zlib ライブラリ関数を使用してファイルを圧縮できますか? 「gzopen()」を使用してファイル圧縮を試みましたが、実際には単一のファイルでいくつかの問題が発生しています。「WinZip」を使用して出力ファイルを解凍しようとすると、出力にファイル拡張子がありません。たとえば。「test.pdf」という名前のファイルを圧縮すると、出力ファイル名は「test」になります。(ファイルの内容は適切です。唯一の問題は拡張子にあります)

     fi = (gzFile *)gzopen(destfile,"ab");
     gzwrite(fi,buff,bufflen);
     gzclose(fi);

2 つの異なるファイル (例: "test.pdf" と "sample.pdf") を圧縮しようとすると、"WinZip"("test") を使用して抽出した後に 1 つのファイルしか取得できませんでした。Zlip ファイルを使用して複数のファイルを圧縮する方法。問題は、圧縮ファイルのヘッダー情報にあると思います。zlib を使用してファイルを圧縮できますか?

4

4 に答える 4

3

-Nまたは--nameオプションをgzip使用して、gzipファイルの名前の代わりにgzipファイルに保存されているファイル名を使用することができます。

gzipを単独で使用して複数のファイルを保存することはできません。Windowsアプリケーションの場合、.zipファイルをエンコードおよびデコードする複数のファイルにはlibzipをお勧めします。libzipは、圧縮と解凍の部分にzlibを使用します。

于 2012-08-23T01:22:37.807 に答える
1

zlib (ライブラリ) と gzip (ユーティリティ) は実際にはファイル管理を行いません。ファイル名の概念がないため、通常、gunzip ユーティリティは抽出されたファイルから .gz 拡張子を削除するだけです。gzip で圧縮されたファイルにはファイル名データは埋め込まれていません。解凍した時点でファイル名が削除されるだけです。

gzip は、複数のファイルをまとめて同じアーカイブに圧縮することもサポートしていません。これを行うには、通常、tar コマンドを使用して、圧縮する個々のファイルを含む 1 つのファイルを作成し、tar ファイルを gzip します。これが、archive.tar.gz または archive.tgz をよく目にする理由です。これは、gzip で圧縮された tar ファイル内のファイルの束です。

于 2012-08-22T13:57:20.187 に答える
1

http://gnuwin32.sourceforge.net/packages/libarchive.htmのようなものを使用して tar を作成し、それを zip することができます

于 2012-08-22T13:51:08.690 に答える
0

zlib は圧縮のみを行い、ファイル名、ファイル データ、ディレクトリ レイアウトなどは処理しません。

Winzip は、これらすべてを ZLIB プロトコルに追加します。zlib ディストリビューションには、zip 関数を提供する contrib ライブラリがあります。

于 2012-08-22T13:51:48.950 に答える