我正在使用 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/和 7-zip 来自http://www.7-zip.org/.