我正在使用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"));
}
答案 0 :(得分:0)
我在写这个问题时找到了解决方案,所以我会自己为可能遇到这个问题的其他人解答。
'ExtractFile'需要2个参数,number为存档内文件的索引,number为输出流或文件。
但是,当声明SevenZipExtractor时,你提供的不是归档,而是像我一样已经在内存中的压缩流,只有一个文件,第一个参数(索引)必须为0。
最终代码应如下所示:
using (var tmp = new SevenZipExtractor((stream_to_compress)))
{
tmp.ExtractFile(0,output_stream ));
}