C# SevenZipSharp-压缩内存流

C# SevenZipSharp-压缩内存流,c#,sevenzipsharp,C#,Sevenzipsharp,我使用SevenZipSharp将文件压缩为zip文件。 有没有一种方法可以使用它从内存流创建一个zip(意思是,在之前将文件加载到内存流中) 谢谢, Maya。不幸的是,SevenZipSharp只是7z应用程序的COM包装器。因此,没有简单的流支持。也许可以通过.CustomParameters.Add()指示它将文件输出到stdout,然后可以在应用程序中以某种方式读入该文件。但这只是一种推测,我没有直接的建议如何让它工作。我使用SevenZipSharp与streams一起使用,没有任何

我使用SevenZipSharp将文件压缩为zip文件。 有没有一种方法可以使用它从内存流创建一个zip(意思是,在之前将文件加载到内存流中)

谢谢,
Maya。

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

我使用SevenZipSharp与streams一起使用,没有任何问题

SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
compressor.CompressionLevel = SevenZip.CompressionLevel.Normal;
compressor.CompressStream(ms, compressedStream);
在最后一行,“ms”是一个我想要压缩的流,比方说一个MemoryStream。“compressedStream”是我想要压缩到的流,它可以是另一个MemoryStream,甚至是一个文件流

对于解压缩:

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,从下载了7-zip。

这很有效。请注意,如果按预期使用SevenZipExtractor.DecompressStream,则会引发错误。我知道这是旧版本,但我似乎无法使7z.dll正常加载/工作。我可以让7za.dll加载/工作,但它只支持.7z,我正在寻找.zip支持。要获取的“正确”dll在哪里/什么7z.dll?谢谢