QuaZIP quazip-0-9
QuaZIP FAQ

Q. Is there any way to use QuaZipFile in Qt where you are supposed to use normal (non-zipped) file, but not through QIODevice API?

A. Usually not. For example, if you are passing file name to some database driver (like SQLite), Qt usually just passes this name down to the 3rd-party library, which is usually does not know anything about QIODevice and therefore there is no way to pass QuaZipFile as a normal file. However, if we are talking about some place where you pass file name, and then internally use QFile to open it, then it is a good idea to make an overloaded method, which accepts a QIODevice pointer. Then you would be able to pass QuaZipFile as well as many other nice things such as QBuffer or QProcess. Of course, that's only possible if you have control over the sources of the particular class.

Q. Can QuaZIP handle files larger than 4GB? What about zip64 standard?

A. Starting with version 0.6, QuaZIP uses Minizip 1.1 with zip64 support which should handle large files perfectly. The zip64 support in Minizip looks like it's not 100% conforming to the standard, but 3rd party tools seem to have no problem with the resulting archives.

Q. Can QuaZIP write archives to a sequential QIODevice like QTcpSocket?

A. Yes, it's possible since QuaZIP v0.7. It's only possible in mdCreate mode, no mdAppend support.

Q. Can I use another version of Minizip in QuaZIP, not the bundled one?

A. No, unfortunately not. To support reading/writing ZIP archives from/to QIODevice objects, some modifications were needed to Minizip. Now that there is a Minizip fork on GitHub, it is theoretically possible to backport these modifications into Minizip in a backward-compatible manner to ensure seamless integration with QuaZIP, but it hasn't been done yet, and there are no short-term plans, only a long-term goal.