繁体   English   中英

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

[英]Reading zip file from byte array using Ionic.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文件?

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

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

您可以使用System.IO.Commpression的内置ZipArchive类。

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

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

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

您将需要添加对System.IO.Compression的引用,该引用不在mscorlib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM