DIZipWriter 是一个 Delphi 组件,用于创建与 PKZip 兼容的 ZIP 档案。归档输出基于 TStream 并直接写入文件 (TFileStream)、内存 (TMemoryStream) 或数据库BLOB (TBlobStream)。

概述
DIZipWriter 的核心功能在其主类中,TDIZipWriter. 它具有创建新 ZIP 存档和添加来自不同数据类型的 ZIP 文件条目的方法:
文件 • 流 • 字符串 • 内存缓冲区
添加 ZIP 文件条目后,应用程序可以向其中写入数据。写作可以一次性进行,也可以分多个块进行。可以有任意数量的任意大小的块,从大小为零的空块开始。
TDIZipWriter将块数据直接写入 ZIP 存档,无需临时内存缓冲区或磁盘存储。除了目标 ZIP 存档之外,TDIZipWriter不创建任何其他文件。它还可以完全在内存中创建 ZIP 存档,这对于 Web 服务器快速发送 ZIP 文件很有用。
每个 ZIP 文件条目都支持注释,以及 ZIP 存档本身的全局注释。ZIP 条目的文件名会自动编码以支持 Unicode。也支持长文件名,就像绝对和相对路径名一样。
压缩算法
TDIZipWriter有一个可插拔的压缩器接口。这些压缩机可以使用,可以添加自定义的:
TYuStoreCompressor 这不是真正的压缩器,因为它在没有压缩的情况下存储数据。最快、最大的文件。
TYuDeflateCompressor Deflate 可以追溯到 1993 年,并构成了迄今为止 ZIP 压缩的基础。它提供快速、合理的压缩,并受到所有 ZIP 软件的支持。
TYuBZip2Compressor Bzip2 于 1995 年首次发布,以压缩时间为代价实现了比 deflate 更好的压缩。它得到了大多数 ZIP 软件的完善和支持。
TYuLzmaCompressor LZMA 于 1998 年推出,在大多数情况下,其压缩比 deflate 和 bzip2 有所改进。极端压缩级别可能很慢,但无论压缩级别如何,解压缩总是很快。由较新的 ZIP 软件支持。
TYuXzCompressor XZ 压缩格式基于 LZMA 并添加了安全的数据完整性检查。
TYuZstdCompressor Zstandard 是 2016 年的最新压缩算法。它结合了高压缩比和短压缩时间。解压速度超级快。受选定的 ZIP 软件支持,如7-Zip zstd。
直接流式传输
直接流式传输是 DIZipWriter 的一项独特功能。它允许对象使用自己的SaveToStream()过程将其数据直接流式传输到 ZIP 存档。这是非常有效的,因为它避免了所有临时存储,例如图像或BLOB数据。这编码速度快,运行效率高。
{ 将 TBitMap 图像保存到 ZIP 存档。}
{ 创建并初始化示例位图图像。}图像:=
TBitMap 。创建;
{ 向 ZIP 存档添加一个新条目。DIZipWriter 。
_ AddEntry ( 'MyImage' ) ;
{ 将位图写入存档的入口流。图片。
_ SaveToStream ( DIZipWriter.CurrentEntryStream ) ; _ _
{ 这同样适用于保存数据库 BLOB。}
MyBlob 。SaveToStream ( DIZipWriter.CurrentEntryStream ) ; _ _
加密:标准 PKZIP 和强 AES
DIZipWriter 可以使用高达 256 位的强AES加密来加密数据。它遵循由 WinZip 9 首次引入的 AE-1 和 AE-2 加密规范。许多 ZIP 软件允许提取AES加密的 ZIP 档案,例如免费的7-Zip zstd。
DIZipWriter 也支持标准 PKZIP 加密也支持,但被认为较弱,不再推荐。