SevenZipSharp - 压缩内存流

时间:2010-11-18 12:20:57

标签: c# sevenzipsharp

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

谢谢, 玛雅。

2 个答案:

答案 0 :(得分:13)

我正在使用带流的SevenZipSharp,没有问题。

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 ......

减压:

SevenZip.SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(compressedStream);
extractor.ExtractFile(0, decompressedStream);

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

很简单。在调用上述任何代码之前,我必须使用:

指定7zip dll
SevenZip.SevenZipBase.SetLibraryPath(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-zip\\7z.dll");

在我的情况下,我没有将7z.dll与我的应用程序捆绑在一起,7-zip单独安装到机器上。

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

答案 1 :(得分:0)

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

相关问题