Files
RedBear-OS/local/recipes/kde/kf6-karchive/source/examples/unzipper/main.cpp
T
2026-04-14 10:51:06 +01:00

57 lines
1.4 KiB
C++

/* This file is part of the KDE project
SPDX-FileCopyrightText: 2014 Maarten De Meyer <de.meyer.maarten@gmail.com>
SPDX-License-Identifier: BSD-2-Clause
*/
/*
* Unzipper
* This example shows how to extract all files from a zip archive.
*
* api: KArchive::directory()
* api: KArchiveDirectory::copyTo(QString destination, bool recursive)
*
* Usage: ./unzipper <archive>
*/
#include <QCoreApplication>
#include <QDir>
#include <kzip.h>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QStringList args(app.arguments());
if (args.size() != 2) {
// Too many or too few arguments
qWarning("Usage: ./unzipper <archive.zip>");
return 1;
}
QString file = args.at(1);
KZip archive(file);
// Open the archive
if (!archive.open(QIODevice::ReadOnly)) {
qWarning("Cannot open " + file.toLatin1());
qWarning("Is it a valid zip file?");
return 1;
}
// Take the root folder from the archive and create a KArchiveDirectory object.
// KArchiveDirectory represents a directory in a KArchive.
const KArchiveDirectory *root = archive.directory();
// We can extract all contents from a KArchiveDirectory to a destination.
// recursive true will also extract subdirectories.
QString destination = QDir::currentPath();
bool recursive = true;
root->copyTo(destination, recursive);
archive.close();
return 0;
}