问题标签 [quazip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3396 浏览

qt - 使用 QuaZip 将 QStream 写入 zip 文件

我想用 QuaZip 在 ziparchive 的文本文件中写一个 QString。我在 WinXP 上使用 Qt Creator。使用我的代码,存档中的文本文件已创建但为空。

当我尝试使用 QFile 时,它​​按预期工作:

我在 test.xml 中找到了正确的内容,所以字符串在那里,但不知何故 QTextStream 不想与 QuaZipFile 一起使用。

当我使用 QDataStream 而不是 QTextStream 进行操作时,会有输出,但不是正确的。QDomDocument 文档;/* doc 填充了一些 XML 数据 */

test.zip 中的 foo.xml 填充了一些数据,但格式错误(每个字符之间有一个额外的“nul”字符)。

如何在 zip-archive 的文本文件中写入字符串?

谢谢,保罗

0 投票
1 回答
495 浏览

qt - quazip::getFileNameList 的 QStringList 通过破坏抛出错误

在 Qt Creator (qt 4.8, winxp) 我写

当文件被销毁时,一个消息框说

调试断言失败!

表达式:_CrtIsValidHeapPointer(pUserData)

在调试器中,我有以下函数堆栈:

qlist.h 中的第 433 行是调试器停止的位置:

仅当我调用 ::getFileNameList() 时才会发生错误,如果我填写列表手册,它工作正常。quazip 工作的其他操作,我可以解压缩和压缩数据,只有 getFileNameList 很麻烦。

编辑:我找到了原因:我使用的 quazip1.dll 是它的发布版本,只是在调试运行时出现了这个问题。因此,如果我使用调试 quazip.dll,它可以正常工作。恼人的是它们被称为相同的,所以每次我从调试切换到发布时我都必须重命名。有人知道解决方法吗?

0 投票
3 回答
7284 浏览

c++ - 如何使用 quazip 压缩目录/文件夹?

我有一个目录,其中包含要压缩的文件和文件夹。我正在使用 qt-project quazip。所以我想我写了一个函数来打包一个目录的所有内容,包括文件结构。

如何在 zip 文件中创建文件夹?我用 QuaZipNewInfo 尝试过,但无法正常工作。

例如,我想用以下内容压缩 tmp 文件夹:

使用通用存档工具(存档实用程序)提取文件后得到的是:

这是我到目前为止所拥有的:

这就是我调用函数的方式:

0 投票
0 回答
492 浏览

qt - 如何使用 QuaZIP 创建一个空文件夹

我已经成功地使用 QuaZIP 在 ZIP 文件中创建了文件夹和文件,但是为了创建一个文件夹,我使用了一种不优雅的方式,它在 ZIP 文件中创建了一个没有名称的文件。有没有办法在 ZIP 文件中创建空文件夹而不在该文件夹中创建文件?

创建文件夹的代码:

0 投票
3 回答
6743 浏览

qt - 如何在 Windows 7 上构建 Quazip 0.5.1?

我正在尝试在安装了 Qt 5.0.1 32 位 LGPL 的 Windows 7(32 位)上构建 quazip 库(版本 0.5.1)。

当我在 Qt-Commandprompt 中运行时:

将目录设置为我提取 Quazip 的文件夹 (C:\Qt\quazip-0.5.1\quazip),我得到以下错误日志:

但是在我的 Zlib 文件夹 (C:\Qt\Qt5\5.0.1\Src\qtbase\src\3rdparty\zlib) 中安装了所有这些列出的文件。

.

当我试图解决这个问题时,我已经添加到 quazip.pro 和 quazip.pri 中:

,这里是如何建议的。

到目前为止,我在 Google 上找到的所有其他解决方案都没有帮助。

我希望你们中的某个人可以帮助我。

问候, LVreg

0 投票
2 回答
1040 浏览

c++ - 如何使用 QuaZip 提取多个文件?

我有下面的代码来移动一个 zip 存档中的文件夹和文件的列表,在我创建它们的时候创建它们(如果尚未创建,还为文件创建路径)。

当我使用readData(char*, qint64)提取内部文件数据以将其流式传输到QFile. 我认为这不是正确的使用方法,但这是我所看到的(在本网站上的一个非常松散的示例中),我还必须更改 QuaZipFile.h 以公开该功能,以便我可以使用它(还暗示我不应该使用它)。

它不会在第一个没有内容的文件上崩溃,但在那之后会崩溃。这是必要的代码(询问您是否需要查看更多信息):

它没有通过这int len条线。我应该在这里使用什么?请注意,变量文件在前面很像这样定义:

传递给 readData 的 int 是最大数据大小的随机数。

0 投票
1 回答
627 浏览

c++ - 使用 QuaZIP 将 zip 内部的文件夹和内容复制到另一个位置?

我将如何从 zip 中复制文件夹(和文件夹的内容)并将复制的文件夹版本移动到不同的位置?

我没有在 QuaZipDir 中看到任何允许您执行此操作的函数。我希望有一种比解析文件然后创建和编写更简单的方法。

例如,如果 zip 看起来像这样:

  • 压缩
    • 文件夹
      • 文件 #1
      • 文件 #2
      • 文件 #3

我再次将QuaZIPQt一起使用

0 投票
2 回答
1210 浏览

c++ - Qt:(错误)未定义对 QuaZip 类(QuaZIP 库)的引用

我正在尝试在我的 Qt 应用程序中探索 QuaZIP 库。我将 quazip.h 包含在 mainwindow.h 和 mainwindow.cpp 中(我通过自动完成获得包含,因此它们对于子文件夹是正确的),我将 quazip.h 放在 PRO 文件的标题中。但是,如果我尝试在主窗口代码中使用 QuaZip 类,我会在构建时收到“未定义的引用”错误。问题是什么?

编辑:还有一个“错误:对`gzopen'的未定义引用”错误。

0 投票
0 回答
623 浏览

qt - QT5.1.1 QuaZip 错误:“QuaZip::goToFirstFile(): ZIP 未在 mdUnzip 模式下打开”

我有一些应该解压缩压缩文件的代码。该代码以前对我有用,但现在我安装了新的 Linux Ubuntu 系统和新的 QT 5.1.1 创建者,并且该代码不再工作了。我还安装了一些必需的软件包,它编译时没有错误。以下是带有错误结果的相关说明:

我想知道为什么会遇到这个错误。是因为缺少一些图书馆还是其他原因?

0 投票
3 回答
1089 浏览

c++ - 如何报告在 QuaGzipFile(QuaZIP 库)上读取数据的进度

我在 Ubuntu 12.04 x86_64 上使用 QuaZIP 0.5.1 和 Qt 5.1.1 for C++。

我的程序读取一个大的 gzip 压缩二进制文件,通常是 1GB 或更多的未压缩数据,并对其进行一些计算。它不是计算广泛的,并且大部分时间都在 I/O 上传递。因此,如果我能找到一种方法来报告读取了多少文件数据,我可以在进度条上报告它,甚至提供对 ETA 的估计。

我打开文件:

但是 QuaGzipFile 中没有查找文件大小或当前位置的功能。

我不需要找到未压缩流的大小和位置,压缩流的大小和位置很好,因为粗略估计进度就足够了。

目前,我可以找到压缩文件的大小,使用QFile(fileName).size(). 另外,我可以很容易地找到未压缩流中的当前位置,方法是保持gzip.read(). 但这两个数字不匹配。

如果有帮助,我可以更改 QuaZIP 库,并访问与 zlib 相关的内部内容。