解压缩ZIP流

问题描述 投票:0回答:2

出于某种原因,我找不到任何与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();
    }
}
c# dotnetzip
2个回答
-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
投票

好的,我找到了解决方案。实际上非常简单,但在线记录非常糟糕。

 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;
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.