SAWZip - zip 文件操作控件






4.56/5 (6投票s)
2001 年 1 月 3 日

367333

5445
一个基于 ATL 的控件,用于读写 zip 文件。
引言
在我开发 Java 类浏览器 (JCB) 时,我需要一个控件或源代码 (C++) 来读取 jar 文件。我搜索了网络,没有找到任何免费的优秀软件来解决这个问题。我找到了 Jean-loup Gailly 和 Mark Adler 的 zlib 压缩库。要理解它的工作原理并不容易。过了一会儿,我找到了 Tadeusz Dracz 编写的库。他在一个 MFC 库中使用了 zlib 压缩。这给了我一个关于如何使用 zlib 压缩库的好主意。他的库的问题在于它是用 MFC 编写的,而我想避免使用 MFC,因为我的 JCB 是一个 WTL 程序。因此,我开始开发一个基于 Tadeusz Dracz 源代码的 ATL 控件。
您可以使用 Visual C++ 和 Visual Basic 6.0 来使用此控件。该控件已在 Windows 98 和 Windows NT 上进行了测试。该应用程序的 UNICODE 版本尚未在 Windows NT 平台上进行测试。
Archive Object
属性
属性 | 类型 | 读/写 | 描述 |
---|---|---|---|
名称 | 字符串 | R | zip 文件的名称。 |
文件 | Files Object | R | 文件对象的集合。 |
注释 | 字符串 | 读/写 | zip 文件的注释。 |
ReadOnly | 布尔值 | R | 当您打开的 zip 文件是只读的时为 True。在您想要压缩文件之前,请测试此标志。 |
方法
名称 | Returns | 参数 | 描述 |
---|---|---|---|
Close | / | / | 关闭 zip 文件。 |
Create | / | ByVal aName as String | 要创建的 zip 文件的名称 |
打开 | / | ByVal aName as String | 要打开的 zip 文件的名称 |
Files Object
属性
属性 | 类型 | 读/写 | 描述 |
---|---|---|---|
Count | long | R | 存档中的文件数。 |
方法
名称 | Returns | 参数 | 描述 |
---|---|---|---|
Add | / | ByVal newVal as File | 将文件添加到存档。如果存档中已存在同名文件,则将被覆盖。 |
AddFileByName | / | ByVal aName as String, ByVal level as Integer, ByVal fullPath as Boolean, ByVal refresh as Boolean |
此方法可以使用通配符添加文件。有关 level 和 fullPath 的更多信息,请参见 File Object。当 refresh 设置为 true 时,将覆盖存档中同名的文件。当设置为 false 时,将跳过该文件。 以下示例执行以下操作:将当前目录中的所有 C++ 源文件添加到存档。覆盖存档中的当前文件。 zip.Files.AddFileByName "*.cpp", 1, true, true |
项目 | 文件 | ByVal index as Long | 返回索引位置的文件。 |
移除 | / | ByVal index as Long | 从存档中删除索引位置的文件。 |
File Object
属性
属性 | 类型 | 读/写 | 描述 |
---|---|---|---|
名称 | 字符串 | 读/写 | 文件的名称。当 fullPath 设置为 false 时添加,路径将不会存储在存档中。 |
Directory(目录) | 布尔值 | R | 当文件是目录时返回 True。 |
CompressedSize | 长整型 | R | 文件压缩后的尺寸。 |
UncompressedSize | 长整型 | R | 文件未压缩时的尺寸。 |
信号强度 | 整数 | 读/写 | 执行压缩的级别。值范围为 0-9。0 表示不压缩。1 提供最快的速度,9 提供最佳压缩。仅当文件尚未存储在存档中时才能设置此项。 |
Crc32 | 长整型 | R | 返回 crc 校验和值。 |
注释 | 字符串 | 读/写 | 返回或设置注释。仅当文件尚未存储在存档中时才能设置注释。 |
FullPath | 布尔值 | 读/写 | 当存储到存档且 FullPath 为 false 时,将丢弃路径信息。当提取文件且 FullPath 为 false 时,将不带路径信息地提取文件。 |
目录 | 长整型 | R | 此文件对象在 Files 集合中的索引。当文件尚未存储在存档中时,此值为 -1。 |
方法
名称 | Returns | 参数 | 描述 |
---|---|---|---|
提取 | / | ByVal aPath as String | 将文件提取到指定路径。当 FullPath 设置为 false 时,文件将不带路径信息地存储。 |
备注
此控件使用 zlib 压缩库的 dll 版本。安装此控件时,zlib.dll 必须可访问。此控件大量使用私有接口在不同对象之间进行通信。您可以在我的 SAWEditListCtrl 页面上阅读有关如何实现这一点的信息。
资源
以下是我用于开发此控件的资源列表
Tadeusz Dracz 的 MFC 库。
zlib 压缩主页。
更新
2000 年 12 月 27 日 版本 1.0 发布。
2001 年 3 月 8 日 版本 1.1
- 为 fileobject 添加属性以检索文件日期
- 提取到字符串缓冲区
2001 年 4 月 18 日 版本 1.2
- 解决了 AddFileByName 中的一个 bug。
2001 年 5 月 23 日 版本 1.4
- 添加了一个新属性用于测试只读 zip 文件。现在您可以从只读文件中提取文件。
- 解决了提取文件后的内存泄漏问题。(感谢 Brad Gutilla)。
2001 年 6 月 28 日 版本 1.6
- 版本 1.6:解决了 extract 方法中的 bug。当 fullpath 为 true 且目录不存在时,会发生“无法创建文件”错误。现在在提取之前会创建 fullpath。(感谢 Nat Dickinson)
2001 年 8 月 30 日 版本 2.0
- 版本 2.0:解决了 archive 对象上的注释 bug。兼容 Win95 用户。(感谢 Frederic St-Laurent)