我正在使用SharpCompress(http://sharpcompress.codeplex.com/)压缩和解压缩文件:

public void compressZip(string in, string out)
{
    try
    {
       using (var archive = ZipArchive.Create())
       {
           archive.AddEntry(file2Compressed, new FileInfo(int));

           var fs= new FileStream(file2Saved, FileMode.CreateNew);

           archive.SaveTo(memoryStream, CompressionType.Deflate);
       }

       using (Stream stream = File.OpenRead(out))
          using (var reader = ZipReader.Open(stream))
          {
              if(!reader.Entry.IsDirectory)//exception here
                  using (Stream newStream = File.Create("123" + in))
                      reader.WriteEntryTo(newStream);
          }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Ex: " + ex.Message);
     }
 }


我在以下地方遇到了一个例外:“这里的例外”,引用不是对象……我不知道为什么会这样。任何的想法?

提前致谢。

最佳答案

您没有呼叫reader.MoveToNextEntry(),因此读者在“第一个条目之前”。您应该使用类似以下内容的东西:

using (Stream stream = File.OpenRead(out))
using (var reader = ZipReader.Open(stream))
{
    while (reader.MoveToNextEntry())
    {
        if (!reader.Entry.IsDirectory)
        {
            using (Stream newStream = File.Create("123" + in))
            {
                reader.WriteEntryTo(newStream);
            }
        }
    }
}

关于c# - 使用SharpCompress解压缩文件时出现异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9491712/

10-10 16:45