SevenZipSharp - 压缩内存流

May*_*aya 10 c# sevenzipsharp

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

谢谢,玛雅.

Mar*_*rko 13

我正在使用SevenZipSharp与流没有问题.

SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
compressor.CompressionLevel = SevenZip.CompressionLevel.Normal;
compressor.CompressStream(ms, compressedStream);
Run Code Online (Sandbox Code Playgroud)

在最后一行,"ms"是我想要压缩的流,比如说一个MemoryStream."compressedStream"是我要压缩的流,它可以是另一个MemoryStream,甚至是FileStream ......

对于减压:

SevenZip.SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(compressedStream);
extractor.ExtractFile(0, decompressedStream);
Run Code Online (Sandbox Code Playgroud)

SevenZipExtractor没有解压缩流方法,所以我使用ExtractFile()代替.

很容易.在调用上述任何代码之前,我必须使用以下命令指定7zip dll:

SevenZip.SevenZipBase.SetLibraryPath(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-zip\\7z.dll");
Run Code Online (Sandbox Code Playgroud)

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

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


Oli*_*ver 0

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