即时压缩(来自流)流

时间:2013-05-07 11:53:31

标签: .net compression

我有一个第三方API方法,它将流作为输入参数并对其进行处理(读取它)。我所提供的流可能非常庞大(也就是说不适合内存)。我想把这个流包装成一些压缩流,当方法读取流时,它将动态地进行压缩。

有没有可以做到这一点的图书馆?压缩不需要超级高效,类似ZIP就足够了。

示例:

using (var data = File.OpenRead(...))
{
  using (var pack = new PackStream(data))
  {
    3rdPartyApiMethod(pack);
  }
}

void 3rdPartyApiMethod(Stream s)
{
  // process the stream until EOF
  // "while(true) s.Read"
}

所以理论上PackStream应该读取来自基础流的数据(尽可能少),打包并返回给谁。

根据评论更新(见下文全文):
该方法的作用是以块的形式读取数据并将每个块上载到服务器中。一次一个。只需将其存放在那里。因为我的文件大约大约100倍,所以块甚至简单的ZIP压缩能够将文件压缩到~1 / 10我相信压缩它是一个好主意。

1 个答案:

答案 0 :(得分:1)

使用DotNetZip的ZlibStream。 zlib专为流压缩而设计。