[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [karchive] examples: bzip2gzip and unzipper examples
From: Maarten De Meyer <de.meyer.maarten () gmail ! com>
Date: 2014-06-18 7:45:56
Message-ID: E1WxAZA-0000MP-3O () scm ! kde ! org
[Download RAW message or body]
Git commit d7833b29f1b8b1e29af1009ac9edf2979784790c by Maarten De Meyer.
Committed on 18/06/2014 at 07:31.
Pushed by demeyer into branch 'master'.
bzip2gzip and unzipper examples
Now most of the basic KArchive usage has an example.
bzip2gzip: Shows the usage of KCompressionDevice
unzipper: Shows how to extract files from an archive
REVIEW: 117974
A +8 -0 examples/bzip2gzip/CMakeLists.txt
A +91 -0 examples/bzip2gzip/main.cpp [License: BSD]
A +8 -0 examples/unzipper/CMakeLists.txt
A +77 -0 examples/unzipper/main.cpp [License: BSD]
http://commits.kde.org/karchive/d7833b29f1b8b1e29af1009ac9edf2979784790c
diff --git a/examples/bzip2gzip/CMakeLists.txt b/examples/bzip2gzip/CMakeLists.txt
new file mode 100644
index 0000000..1de6877
--- /dev/null
+++ b/examples/bzip2gzip/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(BZip2GZip)
+
+find_package(KF5Archive ${KF5_VERSION} REQUIRED)
+
+add_executable(bzip2gzip main.cpp)
+target_link_libraries(bzip2gzip KF5::Archive)
diff --git a/examples/bzip2gzip/main.cpp b/examples/bzip2gzip/main.cpp
new file mode 100644
index 0000000..a09ee6a
--- /dev/null
+++ b/examples/bzip2gzip/main.cpp
@@ -0,0 +1,91 @@
+/* This file is part of the KDE project
+
+ Copyright (C) 2014 Maarten De Meyer <de.meyer.maarten@gmail.com>
+
+ You may use this file under the terms of the BSD license as follows:
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * bzip2gzip
+ * This example shows the usage of KCompressionDevice.
+ * It converts BZip2 files to GZip archives.
+ *
+ * api: KCompressionDevice(QIODevice * inputDevice, bool autoDeleteInputDevice, CompressionType type)
+ * api: KCompressionDevice(const QString & fileName, CompressionType type)
+ * api: QIODevice::readAll()
+ * api: QIODevice::read(qint64 maxSize)
+ * api: QIODevice::write(const QByteArray &data)
+ *
+ * Usage: ./bzip2gzip <archive.bz2>
+*/
+
+#include <QCoreApplication>
+#include <QStringList>
+#include <QFile>
+#include <QFileInfo>
+
+#include <KCompressionDevice>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+ QStringList args(app.arguments());
+
+ if (args.size() != 2) {
+ qWarning("Usage: ./bzip2gzip <archive.bz2>");
+ return 1;
+ }
+
+ QString inputFile = args.at(1);
+ QFile file(inputFile);
+ QFileInfo info(inputFile);
+
+ if (info.suffix() != QStringLiteral("bz2")) {
+ qCritical("Error: not a valid BZip2 file!");
+ return 1;
+ }
+
+ // Open the input archive
+ KCompressionDevice input(&file, false, KCompressionDevice::BZip2);
+ input.open(QIODevice::ReadOnly);
+
+ QString outputFile = (info.completeBaseName() + QStringLiteral(".gz"));
+
+ // Open the new output file
+ KCompressionDevice output(outputFile, KCompressionDevice::GZip);
+ output.open(QIODevice::WriteOnly);
+
+ while(!input.atEnd()) {
+ // Read and uncompress the data
+ QByteArray data = input.read(512);
+
+ // Write data like you would to any other QIODevice
+ output.write(data);
+ }
+
+ input.close();
+ output.close();
+
+ return 0;
+}
diff --git a/examples/unzipper/CMakeLists.txt b/examples/unzipper/CMakeLists.txt
new file mode 100644
index 0000000..5481903
--- /dev/null
+++ b/examples/unzipper/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 2.8.12)
+
+project(Unzipper)
+
+find_package(KF5Archive ${KF5_VERSION} REQUIRED)
+
+add_executable(unzipper main.cpp)
+target_link_libraries(unzipper KF5::Archive)
diff --git a/examples/unzipper/main.cpp b/examples/unzipper/main.cpp
new file mode 100644
index 0000000..fdd89f6
--- /dev/null
+++ b/examples/unzipper/main.cpp
@@ -0,0 +1,77 @@
+/* This file is part of the KDE project
+
+ Copyright (C) 2014 Maarten De Meyer <de.meyer.maarten@gmail.com>
+
+ You may use this file under the terms of the BSD license as follows:
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * 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;
+}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic