# Poco::Zip

# class Decompress

Library: Zip
Package: Zip
Header: Poco/Zip/Decompress.h

## Description

Decompress extracts files from zip files, can be used to extract single files or all files

## Inheritance

Direct Base Classes: ParseCallback

All Base Classes: ParseCallback

## Member Summary

Member Functions: decompressAllFiles, handleZipEntry, mapping

Inherited Functions: handleZipEntry

## Types Aliases

### ZipMapping

using ZipMapping = std::map < std::string, Poco::Path >;

Maps key of FileInfo entries to their local decompressed representation

## Constructors

### Decompress

Decompress(
std::istream & in,
const Poco::Path & outputDir,
bool flattenDirs = false,
bool keepIncompleteFiles = false
);

Creates the Decompress. Note that istream must be good and at the very beginning of the file! Calling decompressAllFiles will cause the stream to be in state failed once the zip file is processed. outputDir must be a directory. If it doesn't exist yet, it will be automatically created. If flattenDirs is set to true, the directory structure of the zip file is not recreated. Instead, all files are extracted into one single directory.

## Destructor

### ~Decompress

~Decompress();

Destroys the Decompress.

## Member Functions

### decompressAllFiles

ZipArchive decompressAllFiles();

Decompresses all files stored in the zip File. Can only be called once per Decompress object. Use mapping to retrieve the location of the decompressed files

### handleZipEntry

bool handleZipEntry(
std::istream & zipStream,
const ZipLocalFileHeader & hdr
);

See also: Poco::Zip::ParseCallback::handleZipEntry()

### mapping

const ZipMapping & mapping() const;

A ZipMapping stores as key the full name of the ZipFileInfo/ZipLocalFileHeader and as value the decompressed file If for a ZipFileInfo no mapping exists, there was an error during decompression and the entry is considered to be corrupt

## Variables

### EError

Poco::FIFOEvent < std::pair < const ZipLocalFileHeader, const std::string >> EError;

Thrown whenever an error is detected when handling a ZipLocalFileHeader entry. The string contains an error message

### EOk

Poco::FIFOEvent < std::pair < const ZipLocalFileHeader, const Poco::Path >> EOk;

Thrown whenever a file was successfully decompressed