首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SevenZipSharp -压缩内存流

SevenZipSharp -压缩内存流
EN

Stack Overflow用户
提问于 2010-11-18 20:20:57
回答 2查看 7.4K关注 0票数 10

我使用SevenZipSharp是为了将文件压缩成zip文件。有没有办法使用它从内存流创建zip (意思是之前将文件加载到内存流中)?

谢谢,玛雅。

EN

回答 2

Stack Overflow用户

发布于 2010-11-29 23:51:50

我使用的是SevenZipSharp和streams,没有任何问题。

代码语言:javascript
复制
SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
compressor.CompressionLevel = SevenZip.CompressionLevel.Normal;
compressor.CompressStream(ms, compressedStream);

在最后一行,"ms“是我想要压缩的流,假设是一个MemoryStream。"compressedStream“是我想压缩到的流,它可以是另一个MemoryStream,甚至是一个FileStream……

对于解压缩:

代码语言:javascript
复制
SevenZip.SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(compressedStream);
extractor.ExtractFile(0, decompressedStream);

SevenZipExtractor没有解压缩流方法,所以我改用ExtractFile()。

非常简单。在调用上述任何代码之前,我必须使用以下命令指定7zip dll:

代码语言:javascript
复制
SevenZip.SevenZipBase.SetLibraryPath(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-zip\\7z.dll");

在我的例子中,我没有将7z.dll与我的应用程序捆绑在一起,7-zip是单独安装在机器上的。

总而言之,超级简单。我从codeplex - http://sevenzipsharp.codeplex.com/下载了SevenZipSharp,从http://www.7-zip.org/下载了7-zip。

票数 13
EN

Stack Overflow用户

发布于 2010-11-18 20:44:17

不幸的是,SevenZipSharp仅仅是7z应用程序的COM包装器。所以没有简单的流支持。也许可以通过<SevenZipCompressor Instance>.CustomParameters.Add()指示它将文件输出到stdout,然后可以在您的应用程序中以某种方式读取该文件。但这只是一种推测,我没有关于如何让它工作的直接提示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4214663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档