1/* This file is part of the KDE libraries
2 SPDX-FileCopyrightText: 2000-2005 David Faure <faure@kde.org>
3 SPDX-FileCopyrightText: 2003 Leo Savernik <l.savernik@aon.at>
4
5 Moved from ktar.h by Roberto Teixeira <maragato@kde.org>
6
7 SPDX-License-Identifier: LGPL-2.0-or-later
8*/
9#ifndef KARCHIVEFILE_H
10#define KARCHIVEFILE_H
11
12#include <karchiveentry.h>
13
14class KArchiveFilePrivate;
15/**
16 * @class KArchiveFile karchivefile.h KArchiveFile
17 *
18 * Represents a file entry in a KArchive.
19 * @short A file in an archive.
20 *
21 * @see KArchive
22 * @see KArchiveDirectory
23 */
24class KARCHIVE_EXPORT KArchiveFile : public KArchiveEntry
25{
26public:
27 /**
28 * Creates a new file entry. Do not call this, KArchive takes care of it.
29 * @param archive the entries archive
30 * @param name the name of the entry
31 * @param access the permissions in unix format
32 * @param date the date (in seconds since 1970)
33 * @param user the user that owns the entry
34 * @param group the group that owns the entry
35 * @param symlink the symlink, or QString()
36 * @param pos the position of the file in the directory
37 * @param size the size of the file
38 */
39 KArchiveFile(KArchive *archive,
40 const QString &name,
41 int access,
42 const QDateTime &date,
43 const QString &user,
44 const QString &group,
45 const QString &symlink,
46 qint64 pos,
47 qint64 size);
48
49 /**
50 * Destructor. Do not call this, KArchive takes care of it.
51 */
52 ~KArchiveFile() override;
53
54 /**
55 * Position of the data in the [uncompressed] archive.
56 * @return the position of the file
57 */
58 qint64 position() const;
59 /**
60 * Size of the data.
61 * @return the size of the file
62 */
63 qint64 size() const;
64 /**
65 * Set size of data, usually after writing the file.
66 * @param s the new size of the file
67 */
68 void setSize(qint64 s);
69
70 /**
71 * Returns the data of the file.
72 * Call data() with care (only once per file), this data isn't cached.
73 * @return the content of this file.
74 */
75 virtual QByteArray data() const;
76
77 /**
78 * This method returns QIODevice (internal class: KLimitedIODevice)
79 * on top of the underlying QIODevice. This is obviously for reading only.
80 *
81 * WARNING: Note that the ownership of the device is being transferred to the caller,
82 * who will have to delete it.
83 *
84 * The returned device auto-opens (in readonly mode), no need to open it.
85 * @return the QIODevice of the file
86 */
87 virtual QIODevice *createDevice() const;
88
89 /**
90 * Checks whether this entry is a file.
91 * @return true, since this entry is a file
92 */
93 bool isFile() const override;
94
95 /**
96 * Extracts the file to the directory @p dest
97 * @param dest the directory to extract to
98 * @return true on success, false if the file (dest + '/' + name()) couldn't be created
99 */
100 bool copyTo(const QString &dest) const;
101
102protected:
103 void virtual_hook(int id, void *data) override;
104
105private:
106 KArchiveFilePrivate *const d;
107};
108
109#endif
110

source code of karchive/src/karchivefile.h