7zipsharp提取/解压缩流到流

时间:2016-03-31 11:02:42

标签: c# stream sevenzipsharp

我正在使用sevenzipsharp库:http://sevenzipsharp.codeplex.com/

我做了一个类似的问题,我在同一时间压缩和解压缩一个流"使用线程,女巫我已经删除,因为意识到,这是无法做到的。不过我的问题仍然存在。如何解压缩/提取压缩流,而不是文件,而是另一个流。我搜索了七个zipharp创建者提供的示例:http://sevenzipsharp.codeplex.com/SourceControl/latest#SevenZipTest/Program.cs,遗憾的是我没有找到我想要实现的有效示例。

我用这种方法压缩了流:

            SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
            compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
            compressor.CompressionLevel = SevenZip.CompressionLevel.Ultra;
            compressor.CompressStream(stream,output_compressed);

我试过这个:

            using (var tmp = new SevenZipExtractor(compressed))
            {
                tmp.ExtractFile(1, File.Create(@"D:\lel.txt"));
            }

1 个答案:

答案 0 :(得分:0)

我在写这个问题时找到了解决方案,所以我会自己为可能遇到这个问题的其他人解答。

'ExtractFile'需要2个参数,number为存档内文件的索引,number为输出流或文件。

但是,当声明SevenZipExtractor时,你提供的不是归档,而是像我一样已经在内存中的压缩流,只有一个文件,第一个参数(索引)必须为0。

最终代码应如下所示:

            using (var tmp = new SevenZipExtractor((stream_to_compress)))
            {
                tmp.ExtractFile(0,output_stream ));
            }