QuaZIP  quazip-0-7-6
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 <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;
454 };
455 
456 #endif
QuaZipFileInfo64::toQuaZipFileInfo
bool toQuaZipFileInfo(QuaZipFileInfo &info) const
Converts to QuaZipFileInfo.
Definition: quazipfileinfo.cpp:62
QuaZipFile::usize
qint64 usize() const
Returns uncompressed file size.
Definition: quazipfile.cpp:431
QuaZip::mdAppend
@ mdAppend
Definition: quazip.h:98
QuaZip::isOpen
bool isOpen() const
Returns true if ZIP file is open, false otherwise.
Definition: quazip.cpp:626
QuaZipFile::setFileName
void setFileName(const QString &fileName, QuaZip::CaseSensitivity cs=QuaZip::csDefault)
Sets the file name.
Definition: quazipfile.cpp:220
QuaZipFile::QuaZipFile
QuaZipFile()
Constructs a QuaZipFile instance.
Definition: quazipfile.cpp:137
QuaZip::getMode
Mode getMode() const
Returns the mode in which ZIP file was opened.
Definition: quazip.cpp:621
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:408
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:250
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:782
QuaZipNewInfo::extraLocal
QByteArray extraLocal
File local extra field.
Definition: quazipnewinfo.h:77
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:499
QuaZipFile::getZipError
int getZipError() const
Returns the error code returned by the last ZIP/UNZIP API call.
Definition: quazipfile.cpp:523
QuaZip::getZipError
int getZipError() const
Returns the error code of the last operation.
Definition: quazip.cpp:631
QuaZip::setCurrentFile
bool setCurrentFile(const QString &fileName, CaseSensitivity cs=csDefault)
Sets current file by its name.
Definition: quazip.cpp:415
QuaZipFileInfo
Information about a file inside archive.
Definition: quazipfileinfo.h:41
QuaZipFile::readData
qint64 readData(char *data, qint64 maxSize)
Implementation of the QIODevice::readData().
Definition: quazipfile.cpp:486
QuaZipFile::getCaseSensitivity
QuaZip::CaseSensitivity getCaseSensitivity() const
Returns case sensitivity of the file name.
Definition: quazipfile.cpp:513
QuaZipFile::atEnd
virtual bool atEnd() const
Returns true if the end of file was reached.
Definition: quazipfile.cpp:390
QuaZip::getZipName
QString getZipName() const
Returns the name of the ZIP file.
Definition: quazip.cpp:609
QuaZipNewInfo::extraGlobal
QByteArray extraGlobal
File global extra field.
Definition: quazipnewinfo.h:79
QuaZipFile::getFileName
QString getFileName() const
Returns file name.
Definition: quazipfile.cpp:508
QuaZipFile::getActualFileName
QString getActualFileName() const
Returns the actual file name in the archive.
Definition: quazipfile.cpp:184
QuaZip::getUnzFile
unzFile getUnzFile()
Returns unzFile handle.
Definition: quazip.cpp:646
QuaZipFile::writeData
qint64 writeData(const char *data, qint64 maxSize)
Implementation of the QIODevice::writeData().
Definition: quazipfile.cpp:497
QuaZipFile::~QuaZipFile
virtual ~QuaZipFile()
Destroys a QuaZipFile instance.
Definition: quazipfile.cpp:167
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:442
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:366
QuaZip::isDataDescriptorWritingEnabled
bool isDataDescriptorWritingEnabled() const
Returns the data descriptor default writing mode.
Definition: quazip.cpp:661
QuaZip::getFileNameCodec
QTextCodec * getFileNameCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:589
QuaZip::getZipFile
zipFile getZipFile()
Returns zipFile handle.
Definition: quazip.cpp:651
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:371
QuaZipFile::csize
qint64 csize() const
Returns compressed file size.
Definition: quazipfile.cpp:420
QuaZipFilePrivate
The implementation class for QuaZip.
Definition: quazipfile.cpp:37
QuaZipFile::open
bool open(OpenMode mode, const char *password)
Opens a file for reading.
Definition: quazipfile.h:298
QuaZipFile::setZip
void setZip(QuaZip *zip)
Binds to the existing QuaZip instance.
Definition: quazipfile.cpp:207
QuaZipFile::close
virtual void close()
Closes the file.
Definition: quazipfile.cpp:461
QuaZipFile::bytesAvailable
virtual qint64 bytesAvailable() const
Returns the number of bytes available for reading.
Definition: quazipfile.cpp:528
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:558
QuaZip::hasCurrentFile
bool hasCurrentFile() const
Returns true if the current file has been set.
Definition: quazip.cpp:641
QuaZipFileInfo64
Information about a file inside archive (with zip64 support).
Definition: quazipfileinfo.h:81
QuaZip::close
void close()
Closes ZIP file.
Definition: quazip.cpp:331
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:195
QuaZipFile::getZip
QuaZip * getZip() const
Returns a pointer to the associated QuaZip object.
Definition: quazipfile.cpp:179
QuaZip::open
bool open(Mode mode, zlib_filefunc_def *ioApi=NULL)
Opens ZIP file.
Definition: quazip.cpp:222
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:174
QuaZip::getCommentCodec
QTextCodec * getCommentCodec() const
Returns the codec used to encode/decode comments inside archive.
Definition: quazip.cpp:604
QuaZipFile::isRaw
bool isRaw() const
Returns true if the file was opened in raw mode.
Definition: quazipfile.cpp:518