解压缩ZIP流

时间:2019-04-01 08:23:53

标签: c# dotnetzip

由于某些原因,我找不到使用DotNetZip的任何示例。

我从Gziped收到了WebAPI的内容。

我要做的就是从响应中读取内存流,然后将内容(文本)解压缩为字符串。

我的压缩工作正常,我只是想不出解压缩:

public static byte[] CompressData(byte[] str)
{
    using (var output = new MemoryStream())
    {
        using (
            var compressor = new Ionic.Zlib.DeflateStream(
            output, Ionic.Zlib.CompressionMode.Compress,
            Ionic.Zlib.CompressionLevel.BestSpeed))
        {
            compressor.Write(str, 0, str.Length);
        }

        return output.ToArray();
    }
}

2 个答案:

答案 0 :(得分:-1)

以下代码显示了程序如何从存档中提取文件。

private void ExtractArchive(object sender, EventArgs e)
{
    try
    {
        using (ZipFile zip = ZipFile.Read(txtArchiveName.zip))
        {
            // Loop through the archive's files.
            foreach (ZipEntry zip_entry in zip)
            {
                zip_entry.Extract(txtExtractTo);
            }
        }

        MessageBox.Show("Done");
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error extracting archive.\n" +
            ex.Message);
    }
}

从zip文件中提取所有条目的最简单方法如下:

using (ZipFile zip = ZipFile.Read(NameOfExistingZipFile))
  {
    zip.ExtractAll(args[1]);
  }

答案 1 :(得分:-1)

好的,我找到了解决方案。实际上很简单,但在线记录却很少。

 public static byte[] Decompress(Stream ms)
{
    byte[] outData = null;
    using (MemoryStream msInner = new MemoryStream())
    {
        using (DeflateStream defStream = new DeflateStream(ms, CompressionMode.Decompress))
        {
            defStream.CopyTo(msInner);
            outData = msInner.ToArray();
        }
    }

    return outData;
}