QuaZip  quazip-1-4
quazipfile.h
1 #ifndef QUA_ZIPFILE_H
2 #define QUA_ZIPFILE_H
3 
4 /*
5 Copyright (C) 2005-2014 Sergey A. Tachenov
6 
7 This file is part of QuaZip.
8 
9 QuaZip is free software: you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation, either version 2.1 of the License, or
12 (at your option) any later version.
13 
14 QuaZip is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU Lesser General Public License for more details.
18 
19 You should have received a copy of the GNU Lesser General Public License
20 along with QuaZip. If not, see <http://www.gnu.org/licenses/>.
21 
22 See COPYING file for the full LGPL text.
23 
24 Original ZIP package is copyrighted by Gilles Vollant, see
25 quazip/(un)zip.h files for details, basically it's zlib license.
26  **/
27 
28 #include <QtCore/QIODevice>
29 
30 #include "quazip_global.h"
31 #include "quazip.h"
32 #include "quazipnewinfo.h"
33 
34 class QuaZipFilePrivate;
35 
37 
74 class QUAZIP_EXPORT QuaZipFile: public QIODevice {
75  friend class QuaZipFilePrivate;
76  Q_OBJECT
77  private:
79  // these are not supported nor implemented
80  QuaZipFile(const QuaZipFile& that);
81  QuaZipFile& operator=(const QuaZipFile& that);
82  protected:
84  qint64 readData(char *data, qint64 maxSize) override;
86  qint64 writeData(const char *data, qint64 maxSize) override;
87  public:
89 
92  QuaZipFile();
94 
99  QuaZipFile(QObject *parent);
101 
110  QuaZipFile(const QString& zipName, QObject *parent =nullptr);
112 
121  QuaZipFile(const QString& zipName, const QString& fileName,
122  QuaZip::CaseSensitivity cs =QuaZip::csDefault, QObject *parent =nullptr);
124 
172  QuaZipFile(QuaZip *zip, QObject *parent =nullptr);
174 
177  ~QuaZipFile() override;
179 
188  QString getZipName()const;
190 
193  QuaZip* getZip()const;
195 
207  QString getFileName() const;
209 
220  QuaZip::CaseSensitivity getCaseSensitivity() const;
222 
246  QString getActualFileName()const;
248 
254  void setZipName(const QString& zipName);
256 
260  bool isRaw() const;
262 
270  void setZip(QuaZip *zip);
272 
283  void setFileName(const QString& fileName, QuaZip::CaseSensitivity cs =QuaZip::csDefault);
285 
292  bool open(OpenMode mode) override;
294 
298  inline bool open(OpenMode mode, const char *password)
299  {return open(mode, nullptr, nullptr, false, password);}
301 
312  bool open(OpenMode mode, int *method, int *level, bool raw, const char *password =nullptr);
314 
346  bool open(OpenMode mode, const QuaZipNewInfo& info,
347  const char *password =nullptr, quint32 crc =0,
348  int method =Z_DEFLATED, int level =Z_DEFAULT_COMPRESSION, bool raw =false,
349  int windowBits =-MAX_WBITS, int memLevel =DEF_MEM_LEVEL, int strategy =Z_DEFAULT_STRATEGY);
351  bool isSequential()const override;
353 
374  qint64 pos()const override;
376 
392  bool atEnd()const override;
394 
406  qint64 size()const override;
408 
415  qint64 csize()const;
417 
425  qint64 usize()const;
427 
443  bool getFileInfo(QuaZipFileInfo *info);
445 
450  bool getFileInfo(QuaZipFileInfo64 *info);
452 
454  void close() override;
456  int getZipError() const;
458  qint64 bytesAvailable() const override;
460 
470  QByteArray getLocalExtraField();
472 
486  QDateTime getExtModTime();
488 
498  QDateTime getExtAcTime();
500 
510  QDateTime getExtCrTime();
511 };
512 
513 #endif
QuaZipFile::atEnd
bool atEnd() const override
Returns true if the end of file was reached.
Definition: quazipfile.cpp:401
QuaZip::open
bool open(Mode mode, zlib_filefunc_def *ioApi=nullptr)
Opens ZIP file.
Definition: quazip.cpp:235
QuaZipFile::getExtAcTime
QDateTime getExtAcTime()
Returns the extended access timestamp.
Definition: quazipfile.cpp:558
QuaZipFileInfo64::toQuaZipFileInfo
bool toQuaZipFileInfo(QuaZipFileInfo &info) const
Converts to QuaZipFileInfo.
Definition: quazipfileinfo.cpp:70
QuaZipFile::usize
qint64 usize() const
Returns uncompressed file size.
Definition: quazipfile.cpp:440
QuaZip::mdAppend
@ mdAppend
Definition: quazip.h:98
QuaZip::isOpen
bool isOpen() const
Returns true if ZIP file is open, false otherwise.
Definition: quazip.cpp:648
QuaZipFile::setFileName
void setFileName(const QString &fileName, QuaZip::CaseSensitivity cs=QuaZip::csDefault)
Sets the file name.
Definition: quazipfile.cpp:224
QuaZipFile::getExtCrTime
QDateTime getExtCrTime()
Returns the extended creation timestamp.
Definition: quazipfile.cpp:563
QuaZipFile::QuaZipFile
QuaZipFile()
Constructs a QuaZipFile instance.
Definition: quazipfile.cpp:141
QuaZipFile::getExtModTime
QDateTime getExtModTime()
Returns the extended modification timestamp.
Definition: quazipfile.cpp:553
QuaZipFile::pos
qint64 pos() const override
Returns current position in the file.
Definition: quazipfile.cpp:383
QuaZip::getMode
Mode getMode() const
Returns the mode in which ZIP file was opened.
Definition: quazip.cpp:643
QuaZip::mdCreate
@ mdCreate
ZIP file was created with open() call.
Definition: quazip.h:97
QuaZipFile::size
qint64 size() const override
Returns file size.
Definition: quazipfile.cpp:418
QuaZipNewInfo::uncompressedSize
ulong uncompressedSize
Uncompressed file size.
Definition: quazipnewinfo.h:84
QuaZipFile::~QuaZipFile
~QuaZipFile() override
Destroys a QuaZipFile instance.
Definition: quazipfile.cpp:171
QuaZip::mdUnzip
@ mdUnzip
ZIP file is open for reading files inside it.
Definition: quazip.h:96
QuaZipNewInfo::internalAttr
quint16 internalAttr
File internal attributes.
Definition: quazipnewinfo.h:64
QuaZip::isZip64Enabled
bool isZip64Enabled() const
Returns whether the zip64 mode is enabled.
Definition: quazip.cpp:811
QuaZip::getOsCode
uint getOsCode() const
Returns the OS code for new files.
Definition: quazip.cpp:606
QuaZipNewInfo::extraLocal
QByteArray extraLocal
File local extra field.
Definition: quazipnewinfo.h:77
QuaZip::isUtf8Enabled
bool isUtf8Enabled() const
Returns whether the UTF-8 encoding mode is enabled.
Definition: quazip.cpp:821
QuaZipNewInfo::comment
QString comment
File comment.
Definition: quazipnewinfo.h:75
QuaZip::getCurrentFileInfo
bool getCurrentFileInfo(QuaZipFileInfo *info) const
Retrieves information about the current file.
Definition: quazip.cpp:509
QuaZipFile::getZipError
int getZipError() const
Returns the error code returned by the last ZIP/UNZIP API call.
Definition: quazipfile.cpp:531
QuaZip::getZipError
int getZipError() const
Returns the error code of the last operation.
Definition: quazip.cpp:653
QuaZip::setCurrentFile
bool setCurrentFile(const QString &fileName, CaseSensitivity cs=csDefault)
Sets current file by its name.
Definition: quazip.cpp:425
QuaZipFileInfo
Information about a file inside archive.
Definition: quazipfileinfo.h:45
QuaZipFile::getCaseSensitivity
QuaZip::CaseSensitivity getCaseSensitivity() const
Returns case sensitivity of the file name.
Definition: quazipfile.cpp:521
QuaZip::getZipName
QString getZipName() const
Returns the name of the ZIP file.
Definition: quazip.cpp:631
QuaZipNewInfo::extraGlobal
QByteArray extraGlobal
File global extra field.
Definition: quazipnewinfo.h:79
QuaZipFile::getFileName
QString getFileName() const
Returns file name.
Definition: quazipfile.cpp:516
QuaZipFile::getActualFileName
QString getActualFileName() const
Returns the actual file name in the archive.
Definition: quazipfile.cpp:188
QuaZip::getUnzFile
unzFile getUnzFile()
Returns unzFile handle.
Definition: quazip.cpp:668
QuaZip::CaseSensitivity
CaseSensitivity
Case sensitivity for the file names.
Definition: quazip.h:114
QuaZipFile::getFileInfo
bool getFileInfo(QuaZipFileInfo *info)
Gets information about current file.
Definition: quazipfile.cpp:451
QuaZipFile
A file inside ZIP archive.
Definition: quazipfile.h:74
QuaZipNewInfo::name
QString name
File name.
Definition: quazipnewinfo.h:55
QuaZip
ZIP archive.
Definition: quazip.h:84
QuaZip::isDataDescriptorWritingEnabled
bool isDataDescriptorWritingEnabled() const
Returns the data descriptor default writing mode.
Definition: quazip.cpp:683
QuaZip::getFileNameCodec
QTextCodec * getFileNameCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:611
QuaZip::getZipFile
zipFile getZipFile()
Returns zipFile handle.
Definition: quazip.cpp:673
QuaZipFile::isSequential
bool isSequential() const override
Returns true, but beware!
Definition: quazipfile.cpp:378
QuaZipNewInfo::externalAttr
quint32 externalAttr
File external attributes.
Definition: quazipnewinfo.h:71
QuaZipFile::open
bool open(OpenMode mode) override
Opens a file for reading.
Definition: quazipfile.cpp:254
QuaZipNewInfo::dateTime
QDateTime dateTime
File timestamp.
Definition: quazipnewinfo.h:62
QuaZipFile::close
void close() override
Closes the file.
Definition: quazipfile.cpp:469
QuaZipFile::csize
qint64 csize() const
Returns compressed file size.
Definition: quazipfile.cpp:429
QuaZipFilePrivate
The implementation class for QuaZip.
Definition: quazipfile.cpp:41
QuaZipFile::open
bool open(OpenMode mode, const char *password)
Opens a file for reading.
Definition: quazipfile.h:298
QuaZipFileInfo64::getExtTime
static QDateTime getExtTime(const QByteArray &extra, int flag)
Extracts extended time from the extra field.
Definition: quazipfileinfo.cpp:149
QuaZipFile::setZip
void setZip(QuaZip *zip)
Binds to the existing QuaZip instance.
Definition: quazipfile.cpp:211
QuaZipFile::bytesAvailable
qint64 bytesAvailable() const override
Returns the number of bytes available for reading.
Definition: quazipfile.cpp:536
QuaZipFile::getLocalExtraField
QByteArray getLocalExtraField()
Returns the local extra field.
Definition: quazipfile.cpp:541
QuaZip::csDefault
@ csDefault
Default for platform. Case sensitive for UNIX, not for Windows.
Definition: quazip.h:115
QuaZip::getCurrentFileName
QString getCurrentFileName() const
Returns the current file name.
Definition: quazip.cpp:567
QuaZip::hasCurrentFile
bool hasCurrentFile() const
Returns true if the current file has been set.
Definition: quazip.cpp:663
QuaZipFileInfo64
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:85
QuaZip::close
void close()
Closes ZIP file.
Definition: quazip.cpp:341
QuaZipNewInfo
Information about a file to be created.
Definition: quazipnewinfo.h:50
QuaZipFile::setZipName
void setZipName(const QString &zipName)
Sets the ZIP archive file name.
Definition: quazipfile.cpp:199
QuaZipFile::writeData
qint64 writeData(const char *data, qint64 maxSize) override
Implementation of the QIODevice::writeData().
Definition: quazipfile.cpp:505
QuaZipFile::getZip
QuaZip * getZip() const
Returns a pointer to the associated QuaZip object.
Definition: quazipfile.cpp:183
QuaZipFile::readData
qint64 readData(char *data, qint64 maxSize) override
Implementation of the QIODevice::readData().
Definition: quazipfile.cpp:494
QuaZip::mdAdd
@ mdAdd
ZIP file was opened for adding files in the archive.
Definition: quazip.h:106
QuaZipFile::getZipName
QString getZipName() const
Returns the ZIP archive file name.
Definition: quazipfile.cpp:178
QuaZip::getCommentCodec
QTextCodec * getCommentCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:626
QuaZipFile::isRaw
bool isRaw() const
Returns true if the file was opened in raw mode.
Definition: quazipfile.cpp:526