cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
57 lines
1.4 KiB
C++
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;
|
|
}
|