【问题标题】:How to decompress bytes from a zip file in C#如何在 C# 中从 zip 文件中解压缩字节
【发布时间】:2013-10-23 13:16:06
【问题描述】:

我的程序处理带有加密标题的 zip 文件,它解密标题并显示信息。现在我想在图片框中查看 zip 文件中的图片,所以我必须将文件解压缩到内存流中。

我有压缩文件的所有字节。这意味着:标题,压缩数据,额外长度。

如何解压缩这些字节以便查看文件?

【问题讨论】:

    标签: c# zip byte compression


    【解决方案1】:

    您应该使用 ZipArchive 类来读取压缩数据,因为看起来您正在读取有效的 zip 文件。

    如果您使用的是 .NET 4 或更早版本,则必须使用第三方库,例如 DotNetZip 及其 ZipInputStream 类。

    【讨论】:

    • 我已经试过了。编写文件(标题、文件名、压缩数据和额外长度)。然后创建了它的文件信息。收到以下错误:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。
    • 您的文件是 Zip 文件、GZip 文件还是其他文件?您正在尝试将其作为 GZip 文件读取,尽管它没有正确的 GZip 标头。也许您应该将压缩数据部分读取为DEFLATE stream
    • 它有 PK zip 签名。这是标题: // 0-3 签名 // 4,5 版本 // 8,9 压缩 // 14-17 CRC32 // 18-21 压缩大小!重要 // 22-25 未压缩大小 // 26,27 文件名长度!重要 // 28,29 额外长度!重要
    • 好的,您应该将其作为 zip format 存档阅读(我认为 ZipArchive 会起作用),而不是作为 GZip 存档。
    • 我使用了 DeflateStream 但它似乎不起作用,因为输出是一个空文件。当我将解密的数据写入文件以使其成为有效的 zip 文件时,它是恶意的,因此这就是我想从压缩字节中读取文件的原因之一。
    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多