我正在尝试将LZMA流解码为流对象,以便可以在不占用内存的情况下从中读取数据。

我的输入文件如下所示:

some uncompressed data
.
.
some lzma compressed data
.
.


而且我想读取未压缩的数据,然后创建一个流对象来读取其余的压缩数据。

不能将整个内容读取到byte []中,因为文件太大。我需要一个流(必须可行,因为您可以压缩非常大的文件)

我已经尝试过使用sevenzipsharp,但是缺少文档使具有我(不是很重要)经验的人无法理解。

有什么建议么?

编辑:我正在从文件读取内存,因此将zip文件解码为文件是不够的。

最佳答案

您可以使用FileStream.Read方法读取流的未压缩部分。读取所有未压缩的部分后,此方法将基础流的位置前进到压缩部分的开头,从而有效地变为可用于解压缩的压缩部分的流。

FileStream.Read用未压缩的数据填充字节数组。要轻松解析其内容,可以使用BinaryReader像这样:

BinaryReader reader = BinaryReader(new MemoryStream(byteArray));

10-08 16:35