2017-01-03 8 views
-1

私はプログラムで.zipファイルを抽出する必要があり、Win32がこれらのタイプのファイルを抽出するAPIがあるかどうか疑問に思っていました。 Compress/Decompressがあるのがわかりましたが、それは実際にデスクトップのフォルダに展開するのではなく、生のバイトを圧縮するためのものです。C++ - Win32 API for .zipを抽出する

答えて

1

.zipファイル(または他のアーカイブタイプ)を操作するためのネイティブWin32 APIはありません。あなたはサードパーティ製のライブラリ(利用可能なオープンソースや商用ライブラリがたくさんあります)を使用するか、ZIP仕様を読んで独自のロジックをゼロから作成する必要があります。

+1

具体的には記載されていませんが、[IShellFolder](https://msdn.microsoft.com/en-us/library/windows/desktop/bb775075.aspx)インターフェイスを使用してファイルを列挙(および抽出)することができます。 ZIPアーカイブサポートは限られています(暗号化なしなど)。 – IInspectable

+0

@ IInspectable yesですが、その理由は、zipファイルをUIの仮想フォルダとして扱うExplorerの機能の一部であるためです。これは実装の詳細であり、一般公開用の公開APIではありません。 –

+0

私はここで同意しなければならないでしょう。常にCOMの場合と同様に、インターフェイスの上に多くのドキュメントがありません。根本的な理由にかかわらず、ZIPアーカイブから 'IShellFolder'インタフェースを構築できるならば、自由にそれを使うべきです。 Microsoftがファイルエクスプローラ*の実装の外でこれを使うことを決して意図していなかったなら、確かに実装を非公開にしていた可能性があります。あなたのコードがエラーを処理する準備ができている限り、文書化されたインターフェイスによる実装を使用しても、文書化されていない実装の詳細に依存しません。 – IInspectable

関連する問題