我正在尝试将 LZMA 流解码为流对象,这样我就可以从中读取数据而不会占用内存。
我的输入文件看起来像:
some uncompressed data
.
.
some lzma compressed data
.
.
我想读取未压缩的数据,然后创建一个流对象来读取压缩数据的其余部分。
将整个文件读入 byte[] 不是一种选择,因为文件太大。我需要一个流(这必须是可能的,因为你可以压缩非常大的文件)
我试过使用 sevenzipsharp,但由于缺乏文档,像我这样(不是很重要)经验的人无法理解。
有什么建议吗?
编辑:我正在从文件读取到内存中,因此将 zip 文件解码为文件是不够的。
最佳答案
您可以使用 FileStream.Read读取流的未压缩部分的方法。该方法在读取所有未压缩部分后,将底层流的位置推进到压缩部分的开头,从而有效地成为可用于解压的压缩部分的流。
FileStream.Read
用未压缩的数据填充一个字节数组。要轻松解析其内容,您可以使用 BinaryReader像这样:
BinaryReader reader = BinaryReader(new MemoryStream(byteArray));
关于c# - 解码 LZMA 流 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282418/