Распакуйте .zip файл, используя Poco / Zip Library - PullRequest
1 голос
/ 06 января 2020

После успешного сжатия (с использованием Poco lib) я обнаружил, что могу распаковать ZIP-файл, содержащий файлы, но не подпапку

Мой блок кода распаковки:

struct UnzipStruct unzipObject;
unzipObject.unzip(source, target);

Вот MyUnzipStruct:

struct UnzipStruct
{
    void unzip(std::string source, std::string target) {
        fs::path sourcePath = fs::path(source);
        std::ifstream inp(sourcePath.string(), ios::binary);
        fs::path targetPath = fs::path(target);
        Poco::Path targetDir(targetPath.string());
        Poco::Zip::Decompress dec(inp, targetDir, false, true);
        // if an error happens invoke the ZipHandlingLib::onDecompressError method
        dec.EError += Poco::Delegate<UnzipStruct, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>>(this, &UnzipStruct::onDecompressError);
        dec.decompressAllFiles();
        dec.EError -= Poco::Delegate<UnzipStruct, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>>(this, &UnzipStruct::onDecompressError);
        inp.close();
    }

    void onDecompressError(const void* pSender, std::pair<const Poco::Zip::ZipLocalFileHeader, const std::string>& info)
    {
        std::cerr << info.second << "\n";
    }
} unzipObject;

Это ошибка Poco или я что-то не так сделал? Потому что я могу извлечь zip-файл на 7z (который содержит подпапку). Исключением, которое я получаю, является AssertionViolationException от Poco.

...