получил исключение для распаковки файла с помощью SharpCompress - PullRequest
1 голос
/ 29 февраля 2012

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

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

Спасибо заранее.

1 Ответ

4 голосов
/ 29 февраля 2012

Вы не звоните 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);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...