将Ionic Zip读取为Memory Stream C# [英] Read ionic Zip as Memory Stream C#

查看:94
本文介绍了将Ionic Zip读取为Memory Stream C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Ionic.Zip通过以下方法将ZipFile提取到内存流中:

I am using Ionic.Zip to extract ZipFile to memory stream with this method:

private MemoryStream GetReplayZipMemoryStream()
{
    MemoryStream zipMs = new MemoryStream();
    using (ZipFile zip = ZipFile.Read(myFile.zip))
    {
        foreach (ZipEntry zipEntry in zip)
        {
            if (zipEntry.FileName.StartsWith("Aligning") || zipEntry.FileName.StartsWith("Sensing"))
            {
                zipEntry.Extract(zipMs);
            }
        }
    }

    zipMs.Seek(0, SeekOrigin.Begin);
    return zipMs;
}

完成提取后,我想读取流并根据条目文件名获取一些条目.我该怎么办?

Once I am done extracting, I want to read the streams and get some of the entries based on the entry filename. How can I do that?

我尝试使用下面的代码进行调用,但是在ZipFile.Read(ms)上显示错误:

I tried by calling with the code below, but I get error on the ZipFile.Read(ms) which said:

无法将其读取为ZipFile

Cannot read that as a ZipFile

Stream ms = GetReplayZipMemoryStream();
using (ZipFile zip = ZipFile.Read(ms))
{
    ZipEntry imageEntry = zip.Entries.First(x => x.FileName.EndsWith(".png"));
    using (Stream s = imageEntry.OpenReader())
    {
        var image = Image.FromStream(s);
        pictureBox1.Image = image;
    }
}

预先感谢您的帮助!

推荐答案

这可能是个有点老的问题和较晚的答案,但我已经做了一些事情来将文件作为字节集合及其文件名

This may be little bit old question and late answer but I have did something to get the files as bytes collections and its file names like this

public static Dictionary<string, byte[]> Decompress(Stream targFileStream)
{
    Dictionary<string, byte[]> files = new Dictionary<string, byte[]>();

    using(ZipFile z = ZipFile.Read(targFileStream))
    {
        foreach (ZipEntry zEntry in z)
        {
            MemoryStream tempS = new MemoryStream();
            zEntry.Extract(tempS);

            files.Add(zEntry.FileName, tempS.ToArray());
        }
    }

    return files;
}

这篇关于将Ionic Zip读取为Memory Stream C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆