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