Extracting zip file in memory failing with C# DotNetZip

感情迁移 提交于 2020-01-02 06:48:04

问题


I'm trying to download and extract a zip file in C#, specifically DotNetZip.

When I run this code...

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(reportUrl);
        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        Stream stream = response.GetResponseStream();
        MemoryStream ms = new MemoryStream();

        stream.CopyTo(ms);
        ms.Seek(0, 0);
        ZipInputStream zip = new ZipInputStream(ms);
        zip.Seek(0, 0);

        ZipEntry e = zip.GetNextEntry();
        string s = e.FileName;

        MemoryStream ms2 = new MemoryStream();
        e.Extract(ms2);

After the Extract method executes, I get...

        $exception  {"Object reference not set to an instance of an object."}   System.Exception {System.NullReferenceException}

Any thoughts? Thanks!


回答1:


It's difficult to say why your code doesn't work. I would start by simplifying it and ensuring that I am properly disposing all disposable resources such as streams:

class Program
{
    static void Main()
    {
        var url = "http://downloads.sourceforge.net/project/junit/junit/3.8.1/junit3.8.1.zip";
        using (var client = new WebClient())
        using (var zip = ZipFile.Read(client.DownloadData(url)))
        {
            foreach (var entry in zip)
            {
                entry.Extract(".");
            }        
        }
    }
}

Make sure you checkout the documentation for many useful examples of using the DotNetZip library.



来源:https://stackoverflow.com/questions/6376948/extracting-zip-file-in-memory-failing-with-c-sharp-dotnetzip

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!