我正在尝试将LZMA流解码为流对象,以便可以在不占用内存的情况下从中读取数据。
我的输入文件如下所示:
some uncompressed data
.
.
some lzma compressed data
.
.
而且我想读取未压缩的数据,然后创建一个流对象来读取其余的压缩数据。
不能将整个内容读取到byte []中,因为文件太大。我需要一个流(必须可行,因为您可以压缩非常大的文件)
我已经尝试过使用sevenzipsharp,但是缺少文档使具有我(不是很重要)经验的人无法理解。
有什么建议么?
编辑:我正在从文件读取内存,因此将zip文件解码为文件是不够的。
最佳答案
您可以使用FileStream.Read方法读取流的未压缩部分。读取所有未压缩的部分后,此方法将基础流的位置前进到压缩部分的开头,从而有效地变为可用于解压缩的压缩部分的流。FileStream.Read
用未压缩的数据填充字节数组。要轻松解析其内容,可以使用BinaryReader像这样:
BinaryReader reader = BinaryReader(new MemoryStream(byteArray));