我在 .NET 中使用 ZipPackage 类已经有一段时间了,我真的很喜欢它具有的简单直观的 API。从条目中读取时,我执行 entry.GetStream() 并从此流中读取。写入/更新条目时,我执行 entry.GetStream(FileAccess.ReadWrite) 并写入此流。非常简单和有用,因为我可以将读/写交给不知道 Stream 最初来自哪里的其他代码。
现在,由于 ZipPackage-API 不包含对 LastModified 等条目属性的支持,我一直在研究其他 zip-api,例如 DotNetZip。但是我对如何使用它有点困惑。例如,当想从一个条目中读取数据时,我首先必须将整个条目提取到一个 MemoryStream 中,寻找到开头并将这个流移交给我的其他代码。并且要写入一个条目,我必须输入一个 ZipEntry 本身可以读取的流。这对我来说似乎很倒退。我是否以错误的方式使用此 API?
ZipEntry 是否可以直接从存储文件的磁盘传送文件并在读者阅读时提取文件?真的需要先完全提取到内存中吗?我不是专家,但对我来说似乎是错误的。