#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. После записи в него позиция потока находится в конце извлеченного содержимого, и читатель не будет знать, нужно ли его перематывать (в конце концов, мы могли бы предоставить ему кучу файлов, расположенных рядом друг с другом), поэтому нам нужно сделать это вручную.