使用Ionic.zip从字节数组中读取zip文件

时间:2016-07-14 18:31:54

标签: c# ionic-framework zip

我有一段允许解压缩字节数组的代码:

public static byte[] Decompress(this byte[] data)
{
    using (ZipFile zout = ZipFile.Read(data))
    {
        ZipEntry entry = zout.FirstOrDefault();
        Assert.ObjectIsNotNull(entry, "Unable to find default ZIP entry");
        MemoryStream zos = new MemoryStream();
        entry.Extract(zos);
        return zos.ToArray();
    }
}

我已升级到最新版本的Ionic.zip,现在我收到以下错误:

  

无法将byte []转换为字符串。

最新版本中不再提供重载ZipFile.Read(byte[])

如何从字节数组中读取zip文件?

2 个答案:

答案 0 :(得分:4)

ZipFile.Read方法需要文件名或流来读取,因此您需要提供一个流来读取它:

using (MemoryStream stream = new MemoryStream(data))
using (ZipFile zout = ZipFile.Read(stream))
{
    // ....

答案 1 :(得分:0)

您可以使用ZipArchive中的内置System.IO.Commpression课程。

using(var stream = new MemoryStream(data))
{
    using(var archive = new ZipArchive(stream))
    {
        // Use the archive
    }
 }

ZipArchive https://msdn.microsoft.com/en-us/library/hh158268(v=vs.110).aspx

MemoryStream https://msdn.microsoft.com/en-us/library/e55f3s5k(v=vs.110).aspx

您需要添加System.IO.Compression的引用,它不在mscorlib中。