Я использую Ionic.Zip для извлечения ZipFile в поток памяти с помощью этого метода:
private MemoryStream GetReplayZipMemoryStream()
{
MemoryStream zipMs = new MemoryStream();
using (ZipFile zip = ZipFile.Read(myFile.zip))
{
foreach (ZipEntry zipEntry in zip)
{
if (zipEntry.FileName.StartsWith("Aligning") || zipEntry.FileName.StartsWith("Sensing"))
{
zipEntry.Extract(zipMs);
}
}
}
zipMs.Seek(0, SeekOrigin.Begin);
return zipMs;
}
Когда я закончу извлечение, я хочу прочитать потоки и получить некоторые записи на основе имени файла записи. Как я могу это сделать?
Я попытался позвонить с кодом ниже, но я получаю сообщение об ошибке ZipFile.Read(ms)
, которое говорит:
Не могу прочитать это как ZipFile
Stream ms = GetReplayZipMemoryStream();
using (ZipFile zip = ZipFile.Read(ms))
{
ZipEntry imageEntry = zip.Entries.First(x => x.FileName.EndsWith(".png"));
using (Stream s = imageEntry.OpenReader())
{
var image = Image.FromStream(s);
pictureBox1.Image = image;
}
}
Заранее спасибо за помощь!
.Extract()
, данные (в потоке памяти) больше не заархивированы... У вас есть ряд связанных несжатых файлов. - person Henk Holterman   schedule 22.12.2014ZipArchive
, который предоставляет встроенную функциональность для обработки файлов .zip и который, ИМХО, более удобен, чем код, который у вас есть сейчас. - person Peter Duniho   schedule 22.12.2014