c# - 解码 LZMA 流 c#

标签 c# filestream 7zip lzma sevenzipsharp

我正在尝试将 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/

相关文章:

c++ - 7-Zip : Any good tutorials?

c# - 返回以逗号分隔的前两个数组元素加起来等于 30 的字符串

c# - 如果列表不为空,则将拦截添加到查询

c# - 如何为 Npgsql 提供自定义数据类型作为参数?

c# - 使用 C# 从文件中读取前 10MB

vb.net - VB.Net 中的文件比较

7zip - 7ZG.exe - 提取特定文件夹的子文件和子目录

c# - Windows 性能计数器从 PerfMon 中消失

c# - 读取包含未知数量结构的二进制文件 (C#)

c# - 如何在将文件对保持在一起的同时压缩具有最大输出大小的多个文件