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