javascript - fs.createReadStream vs Readable 用于重文件
问题描述
createReadStream
fromfs
和Readable
from有什么区别吗stream
测试.csv
name,color
audi,green
bmw,red
mercedes,silver
fs.createReadStream
import { createReadStream } from 'fs'
import parser from 'csv-parser'
;(async () => {
createReadStream('test.csv')
.pipe(parser())
.on('data', (data) => console.log(data))
})()
可读
import { readFile } from 'fs/promises'
import { Readable } from 'stream'
import parser from 'csv-parser'
;(async () => {
const csv = await readFile('test.csv')
Readable.from(csv)
.pipe(parser())
.on('data', (data) => console.log(data))
})()
两者似乎都在做同样的事情。但是对于大量数据,哪一个更有效?
解决方案
fs.readFile
/一次读取fsPromises.readFile
文件的全部内容,而一次createReadStream
只读取块。使用readFile
withReadable.from
可能会提供相同的 API,但是通过将整个内容读取到内存中,您将失去流式传输的好处。
如果您正在读取大量文件,我建议您createReadStream
结束readFile
,因为您可以开始处理和解析数据而无需等待整个文件被读取,您甚至不需要将整个文件读入内存(除非您的用例需要它,即)。如果您的文件很小,则可能无关紧要(但请对其进行分析)。
推荐阅读
- javascript - 尝试使用 JavaScript 设置 datetime-local
- firebase - 如何在firestore的文本字段中开始一个新段落
- react-native - createMaterialTopTabNavigator 无法修改 tabStyle paddingVertical
- python-3.x - Python 3.9:使用标准库构造 DST 有效时间戳
- java - 如何将 DB AWS 机密传递到 tomcat context.xml?
- php - 通过动态表 PHP 中基于行的按钮访问行值
- python - 使用 PyODBC 和 SQL-Alchemy 同步数据更新
- r - 用 plotly 绘制线图时定义配色方案
- flutter - 如何将 PX 值转换为颤振字体大小
- ios - 本机脚本:从 6.5 迁移到 7.0 时,iOS 上的构建失败