如何将物理zip文件转换为System.IO.Stream对象

时间:2013-04-11 04:39:47

标签: c# stream zip converter

如何将物理zip文件转换为System.IO.Stream对象? 我试过了 -

  1. System.IO.Stream stream = File.ReadAllBytes(Path + "\\" + "ZipFile.zip");
  2. StreamReader stream = new StreamReader(Path + "\\" + "ZipFile.zip");
  3. System.IO.Stream stream = new FileStream(Path + "\\" + "ZipFile.zip", FileMode.Open); stream.Close();
  4. 他们似乎都没有工作。
    当尝试读取流时,它或者说流不可读 或者文件在目的地似乎已损坏且无法解压缩

3 个答案:

答案 0 :(得分:1)

  1. 无法将其编译(将byte[]强制转换为Stream)...所以不确定如何在此处获得运行时错误。
  2. StreamReader不是广告信息流 - 不确定您希望转化的内容。
  3. 看起来你立即关闭了流 - 这似乎是唯一匹配标题的行,并且会产生确切的运行时错误。修复 - 在完成阅读之前不要关闭流。

答案 1 :(得分:1)

试试此代码。要使用此代码,您必须下载dotnetzip-ionic.dll

using Ionic.Zip;
using Ionic.Crc;
using System.IO;

protected void Page_Load(object sender, EventArgs e)
    {

using (ZipFile zip = ZipFile.Read(ZipPath))
    {

        foreach (ZipEntry entry in zip)
        {

            CrcCalculatorStream reader = entry.OpenReader();
            MemoryStream memstream = new MemoryStream();
            reader.CopyTo(memstream);
            byte[] bytes = memstream.ToArray();
            System.IO.Stream stream = new System.IO.MemoryStream(bytes); 


        }
    }
}

答案 2 :(得分:0)