Node.js 中的 fs.ReadStream 和 fs.createReadStream 有啥区别吗?

Posted

技术标签:

【中文标题】Node.js 中的 fs.ReadStream 和 fs.createReadStream 有啥区别吗?【英文标题】:Is there any difference between fs.ReadStream and fs.createReadStream in Node.js?Node.js 中的 fs.ReadStream 和 fs.createReadStream 有什么区别吗? 【发布时间】:2013-05-31 09:48:09 【问题描述】:

在 Node.js 的 fs 模块中,fs.ReadStreamfs.createReadStream 有什么区别吗?据我所知,两者都取文件名,然后创建流对象......对吗?

【问题讨论】:

请将问题 2 作为单独的问题发布。 readFile - 在将文件提供给用户之前,它会将文件完全读入内存。 createReadStream - 它将按照事先指定的大小分块读取文件。 【参考方案1】:

没有

https://github.com/nodejs/node/blob/1124de2d76ad7118267d91a08485aa928a5f0865/lib/fs.js#L1711

fs.createReadStream = function(path, options) 
  return new ReadStream(path, options);
;

细则:是的。 fs.createReadStream 会花费您 1 个额外的包装函数调用

【讨论】:

感谢您的回答。但是包装函数是否必要?平时处理ReadStream时应该使用哪一个?我不明白为什么必须包装这个函数,特别是因为没有其他参数作为输入,除了在函数内创建新实例之外没有任何行。 我再说一遍,没有区别。您可以使用其中任何一种,无论哪种都无所谓。 'fs.createReadStream' 只是一种方便的方法,可能适合不喜欢 new 关键字的人。 由于与ES6的兼容性,我应该更喜欢哪种代码样式?

以上是关于Node.js 中的 fs.ReadStream 和 fs.createReadStream 有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js fs文件系统相关操作

Node.js EventEmitter

Node.js EventEmitter

Node.js EventEmitter

Node.js EventEmitter

Node.js笔记