C# 从MemoryStream打开拉链包

C# 从MemoryStream打开拉链包,c#,zip,memorystream,C#,Zip,Memorystream,我想处理一个ZIP文件的内容,该文件是下载的,只存储在内存中(不使用硬盘!)packageStream包含ZIP文件的字节 MemoryStream packageStream = // Stream of downloaded ZIP file var zipPackage = System.IO.Packaging.Package.Open(packageStream, FileMode.Open, System.IO.FileAccess.Read); var parts = zi

我想处理一个ZIP文件的内容,该文件是下载的,只存储在内存中(不使用硬盘!)
packageStream
包含ZIP文件的字节

MemoryStream packageStream = // Stream of downloaded ZIP file    
var zipPackage = System.IO.Packaging.Package.Open(packageStream, FileMode.Open, System.IO.FileAccess.Read);
var parts = zipPackage.GetParts();
var rels = zipPackage.GetRelationships();
零件
rels
不包含任何项目

谁能告诉我我做错了什么

MemoryStream
流类型是否错误

类在场景中是否是ZIP文件的错误类

如果你能告诉我任何替代方案,请不要第三方项目

谢谢

更新


重复问题的答案解决了我的问题(ZipArchive类)。接受的答案使用第三方项目。

如何处理.zip文件取决于您使用的框架版本。流是完全可互换的,甚至可以相互封装。问题是,您是否有一个类可以实际获取流并执行zip操作

如果你至少有Framework4.5,你就有了一个完整的框架,这就是childsplay。示例以流为例,它可以是流抽象类的任何实现。所有的内存流都是一个可读的流

如果你在那下面,我敢肯定你被冲了。在4.5版本之前,根本没有类可以获取流并对其执行ZIP操作。大多数方法都是将.zip文件保存在磁盘上,然后使用带有IO重定向的控制台程序对其进行解压缩。WindowsZIP功能和7zip都可以实现这一点,但都需要在磁盘上进行写入


也许您可以使用7-zip的代码部分来执行进程内/内存中的zip操作。但这可能是个棘手的问题。

你试过这个吗?“MemoryStream是否为错误的流类型?”为什么不将其保存到文件中,然后尝试打开它(仅用于测试目的)?@AleksAndreev已成功测试。ZipArchive类完成了此操作。。。谢谢