ReadStream 的 read 方法太难用,调用 read ,如果读取长度超过了已经准备好的字节数据长度,会直接返回 null(即便剩余文件字节长度远远超过了读取的长度)。
测试用的文件是一个 bt 种子,只在解析 pieces 的时候会出问题,因为 pieces 的长度是 6700 ,但是缓冲区剩余可读字节没有这么多,read(6700)会自己返回 null 。
开始我尝试自己创建 Buffer ,每次只读 1 个字节,用循环处理拼接 Buffer ,后来觉得这样做太操蛋了。
之后看爆栈上的解答,说要监听 readable 事件,因为可能会多次回调。
https://stackoverflow.com/questions/41478192/nodejs-readable-read-return-null
我对 nodejs 的 stream 不是很熟练,我不想写一些 hack 的代码,求问有一些好用的三方 Stream 库吗?