c# - SevenZipSharp - 压缩内存流

标签 c# sevenzipsharp

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

谢谢, 玛雅人。

最佳答案

我将 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 是单独安装到机器上的。

总而言之 super 简单。我从 codeplex 下载了 SevenZipSharp - http://sevenzipsharp.codeplex.com/和来自 http://www.7-zip.org/ 的 7-zip .

关于c# - SevenZipSharp - 压缩内存流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214663/

相关文章:

c# - 如何使用 SevenZipSharp 创建 SFX ZIP?

c# - 使用 MS-Test 执行测试时无法加载 DLL

c# - 无法将日期时间格式转换为 00 :00:00 instead of 12:00:00?

c# - 将两个数组的有效整数表示为一个

c# - 使用 7zip 检测文件是否为存档

c# - 流无效或未找到对应的签名

c# - 如何使用 SevenZipSharp 将文件添加到存档

javascript - 如何使用 Jquery .load() 重新加载部分 View ?

c# - 您可以从 Application.DoEvents() 内部捕获异常吗?

c# - Linq 按 2 列(创建和修改)排序,以较大者为准