как преобразовать запись zip-файла в ZIP-файл с помощью ионной библиотеки c # asp?

#c# #zipfile

#c# #zip

Вопрос:

я использую ионную библиотеку для чтения zip-файла на c#

у меня много zip-файлов в одном zip-файле, я читаю zip-файл, но не могу прочитать файлы subZip

я сделал эту часть кода здесь:

 foreach (var sessionEntry in subjectSessions.Entries)
{
    using (MemoryStream entryStream = new MemoryStream())
    {
        sessionEntry.OpenReader().CopyTo(entryStream);
        ZipFile sessionZIPFile = ZipFile.Read(entryStream);
    }
}
  

но это не работает, это всегда дает мне одно и то же исключение

Не удается прочитать это как ZIP-файл, исключение Ionic.Zip.BadReadException: не удалось прочитать блок — нет данных! (позиция 0x00000000)

я попытался вызвать extract для объекта sessionEntry, тоже не сработало

как я могу прочитать файлы subZip?

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

Ответ №1:

После того, как вы скопировали извлеченное содержимое в поток и перед его чтением, вам необходимо вручную сбросить позицию потока, например

 stream.Seek(0, SeekOrigin.Begin);
  

Комментарии:

1. это сработало, но в чем разница, если я установлю позицию в 0? большое спасибо, чувак

2. После записи в него позиция потока находится в конце извлеченного содержимого, и читатель не будет знать, нужно ли его перематывать (в конце концов, мы могли бы предоставить ему кучу файлов, расположенных рядом друг с другом), поэтому нам нужно сделать это вручную.