我正在使用Ionic.Zip来提取Zip文件并将其存储在内存流中,方法如下:
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()
方法后,内存流中的数据不再是压缩格式,而是一系列连续的未压缩文件。 - H HZipArchive
类,它提供了处理.zip文件的内置功能,并且在我看来比您现在拥有的代码更方便。 - Peter Duniho