Палец вверх 1
Перевод
Перевод

получил исключение для распаковки файла с помощью SharpCompress

Я использую 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);
     }
 }

Я получил исключение по адресу: «исключение здесь», ссылка не является объектом ... Я понятия не имею, почему это так. Любая идея?

Заранее спасибо.

c# compression
задан olidev 29 февр. 2012 г., 4:00:00
источник

1 ответ

Решение 3
Перевод
Перевод

Вы не вызываете 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);
            }
        }
    }
}
ответ дан Jon Skeet 29 февр. 2012 г., 4:03:27
источник