QuaZIP  quazip-0-9
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);
86  qint64 writeData(const char *data, qint64 maxSize);
87  public:
89 
92  QuaZipFile();
94 
99  QuaZipFile(QObject *parent);
101 
110  QuaZipFile(const QString& zipName, QObject *parent =NULL);
112 
121  QuaZipFile(const QString& zipName, const QString& fileName,
122  QuaZip::CaseSensitivity cs =QuaZip::csDefault, QObject *parent =NULL);
124 
172  QuaZipFile(QuaZip *zip, QObject *parent =NULL);
174 
177  virtual ~QuaZipFile();
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  virtual bool open(OpenMode mode);
294 
298  inline bool open(OpenMode mode, const char *password)
299  {return open(mode, NULL, NULL, false, password);}
301 
312  bool open(OpenMode mode, int *method, int *level, bool raw, const char *password =NULL);
314 
341  bool open(OpenMode mode, const QuaZipNewInfo& info,
342  const char *password =NULL, quint32 crc =0,
343  int method =Z_DEFLATED, int level =Z_DEFAULT_COMPRESSION, bool raw =false,
344  int windowBits =-MAX_WBITS, int memLevel =DEF_MEM_LEVEL, int strategy =Z_DEFAULT_STRATEGY);
346  virtual bool isSequential()const;
348 
369  virtual qint64 pos()const;
371 
387  virtual bool atEnd()const;
389 
401  virtual qint64 size()const;
403 
410  qint64 csize()const;
412 
420  qint64 usize()const;
422 
438  bool getFileInfo(QuaZipFileInfo *info);
440 
445  bool getFileInfo(QuaZipFileInfo64 *info);
447 
449  virtual void close();
451  int getZipError() const;
453  virtual qint64 bytesAvailable() const;
455 
465  QByteArray getLocalExtraField();
467 
481  QDateTime getExtModTime();
483 
493  QDateTime getExtAcTime();
495 
505  QDateTime getExtCrTime();
506 };
507 
508 #endif
QuaZipFile::getExtAcTime
QDateTime getExtAcTime()
Returns the extended access timestamp.
Definition: quazipfile.cpp:562
QuaZipFileInfo64::toQuaZipFileInfo
bool toQuaZipFileInfo(QuaZipFileInfo &info) const
Converts to QuaZipFileInfo.
Definition: quazipfileinfo.cpp:64
QuaZipFile::usize
qint64 usize() const
Returns uncompressed file size.
Definition: quazipfile.cpp:443
QuaZip::mdAppend
@ mdAppend
Definition: quazip.h:98
QuaZip::isOpen
bool isOpen() const
Returns true if ZIP file is open, false otherwise.
Definition: quazip.cpp:657
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:567
QuaZipFile::QuaZipFile
QuaZipFile()
Constructs a QuaZipFile instance.
Definition: quazipfile.cpp:141
QuaZipFile::getExtModTime
QDateTime getExtModTime()
Returns the extended modification timestamp.
Definition: quazipfile.cpp:557
QuaZip::getMode
Mode getMode() const
Returns the mode in which ZIP file was opened.
Definition: quazip.cpp:652
QuaZip::mdCreate
@ mdCreate
ZIP file was created with open() call.
Definition: quazip.h:97
QuaZipFile::size
virtual qint64 size() const
Returns file size.
Definition: quazipfile.cpp:420
QuaZipNewInfo::uncompressedSize
ulong uncompressedSize
Uncompressed file size.
Definition: quazipnewinfo.h:84
QuaZipFile::open
virtual bool open(OpenMode mode)
Opens a file for reading.
Definition: quazipfile.cpp:254
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:823
QuaZip::getOsCode
uint getOsCode() const
Returns the OS code for new files.
Definition: quazip.cpp:615
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:833
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:517
QuaZipFile::getZipError
int getZipError() const
Returns the error code returned by the last ZIP/UNZIP API call.
Definition: quazipfile.cpp:535
QuaZip::getZipError
int getZipError() const
Returns the error code of the last operation.
Definition: quazip.cpp:662
QuaZip::setCurrentFile
bool setCurrentFile(const QString &fileName, CaseSensitivity cs=csDefault)
Sets current file by its name.
Definition: quazip.cpp:433
QuaZipFileInfo
Information about a file inside archive.
Definition: quazipfileinfo.h:45
QuaZipFile::readData
qint64 readData(char *data, qint64 maxSize)
Implementation of the QIODevice::readData().
Definition: quazipfile.cpp:498
QuaZipFile::getCaseSensitivity
QuaZip::CaseSensitivity getCaseSensitivity() const
Returns case sensitivity of the file name.
Definition: quazipfile.cpp:525
QuaZipFile::atEnd
virtual bool atEnd() const
Returns true if the end of file was reached.
Definition: quazipfile.cpp:402
QuaZip::getZipName
QString getZipName() const
Returns the name of the ZIP file.
Definition: quazip.cpp:640
QuaZipNewInfo::extraGlobal
QByteArray extraGlobal
File global extra field.
Definition: quazipnewinfo.h:79
QuaZipFile::getFileName
QString getFileName() const
Returns file name.
Definition: quazipfile.cpp:520
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:677
QuaZipFile::writeData
qint64 writeData(const char *data, qint64 maxSize)
Implementation of the QIODevice::writeData().
Definition: quazipfile.cpp:509
QuaZipFile::~QuaZipFile
virtual ~QuaZipFile()
Destroys a QuaZipFile instance.
Definition: quazipfile.cpp:171
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:454
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
QuaZipFile::isSequential
virtual bool isSequential() const
Returns true, but beware!
Definition: quazipfile.cpp:378
QuaZip::isDataDescriptorWritingEnabled
bool isDataDescriptorWritingEnabled() const
Returns the data descriptor default writing mode.
Definition: quazip.cpp:692
QuaZip::getFileNameCodec
QTextCodec * getFileNameCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:620
QuaZip::getZipFile
zipFile getZipFile()
Returns zipFile handle.
Definition: quazip.cpp:682
QuaZipNewInfo::externalAttr
quint32 externalAttr
File external attributes.
Definition: quazipnewinfo.h:71
QuaZipNewInfo::dateTime
QDateTime dateTime
File timestamp.
Definition: quazipnewinfo.h:62
QuaZipFile::pos
virtual qint64 pos() const
Returns current position in the file.
Definition: quazipfile.cpp:383
QuaZipFile::csize
qint64 csize() const
Returns compressed file size.
Definition: quazipfile.cpp:432
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:141
QuaZipFile::setZip
void setZip(QuaZip *zip)
Binds to the existing QuaZip instance.
Definition: quazipfile.cpp:211
QuaZipFile::close
virtual void close()
Closes the file.
Definition: quazipfile.cpp:473
QuaZipFile::bytesAvailable
virtual qint64 bytesAvailable() const
Returns the number of bytes available for reading.
Definition: quazipfile.cpp:540
QuaZipFile::getLocalExtraField
QByteArray getLocalExtraField()
Returns the local extra field.
Definition: quazipfile.cpp:545
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:576
QuaZip::hasCurrentFile
bool hasCurrentFile() const
Returns true if the current file has been set.
Definition: quazip.cpp:672
QuaZipFileInfo64
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:85
QuaZip::close
void close()
Closes ZIP file.
Definition: quazip.cpp:347
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::getZip
QuaZip * getZip() const
Returns a pointer to the associated QuaZip object.
Definition: quazipfile.cpp:183
QuaZip::open
bool open(Mode mode, zlib_filefunc_def *ioApi=NULL)
Opens ZIP file.
Definition: quazip.cpp:236
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:635
QuaZipFile::isRaw
bool isRaw() const
Returns true if the file was opened in raw mode.
Definition: quazipfile.cpp:530