7zipsharp извлечение / распаковка потока в поток

Я использую библиотеку sevenzipsharp: http://sevenzipsharp.codeplex.com/

Я задал похожий вопрос, когда я сжимал и распаковывал поток в одно и то же время, используя потоки, которые я с тех пор удалил из-за осознания того, что это невозможно. Однако мой вопрос остается в силе. Как мне распаковать / извлечь сжатый поток, не в файл, а в другой поток. Я искал примеры, предоставленные создателями sevenzipsharp в: http://sevenzipsharp.codeplex.com/SourceControl/latest, к сожалению, я не нашел действительного примера того, чего я пытаюсь достичь.

Я сжал поток с помощью этого метода:

            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 ответ

Я нашел решение, когда писал этот вопрос, поэтому я сам отвечу на него для других людей, которые могут столкнуться с этой проблемой.

"ExtractFile" ожидает 2 параметра, номер 1 - это индекс файла в архиве, номер 2 - выходной поток или файл.,

но, объявляя SevenZipExtractor, вы предоставляете ему не архив, а сжатый поток, который уже находится в памяти, как я, и нет ничего, кроме одного файла, 1-й параметр (индекс) должен быть 0.

Окончательный код должен выглядеть так:

            using (var tmp = new SevenZipExtractor((stream_to_compress)))
            {
                tmp.ExtractFile(0,output_stream ));
            }
Другие вопросы по тегам