3

我有一个 3rd-party 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,我相信压缩它是个好主意。

4

1 回答 1

1

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

于 2013-05-07T14:41:19.610 回答