簡體   English   中英

使用C#DotNetZip解壓縮內存中的zip文件

[英]Extracting zip file in memory failing with C# DotNetZip

我正在嘗試下載並提取C#中的zip文件,特別是DotNetZip。

當我運行此代碼時......

        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);

Extract方法執行后,我得到......

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

有什么想法嗎? 謝謝!

這是在方法運行之前對象的樣子

很難說為什么你的代碼不起作用。 我將從簡化它開始,並確保我正確處理所有可用資源,如流:

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(".");
            }        
        }
    }
}

請務必查看文檔以獲取使用DotNetZip庫的許多有用示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM