Node.js Stream基础:创建可读流与数据流处理
25 浏览量
更新于2024-08-31
收藏 78KB PDF 举报
Node.js中的Stream是处理大量数据流的一种高效机制,特别适用于处理大文件或实时数据传输。在Node.js的文件系统操作中,标准库fs提供了一系列基本API,但当处理大文件时,逐块读写显得繁琐。为此,Node.js引入了可读流(Readable Stream)和可写流(Writable Stream),使得文件操作更加灵活和易于管理。
**可读流(Readable Stream)**
1. **createReadStream()方法**:这是创建可读流的关键函数,它接受两个参数。第一个参数是文件路径,用于指定要读取的文件;第二个参数是options对象,包含多个配置项:
- `r`:表示二进制模式,通常无需设置,因为默认就是二进制模式。
- `null`:这里可能指的是`autoClose`,默认为`true`,表示在数据读取完成后自动关闭流。
- `null`:可能是指`fd`,表示文件描述符,一般不直接使用,可以通过`fs.open()`获取。
- `0o666`:权限位,十六进制表示,通常不需手动设置,由其他方式确定。
- `true`:`encoding`,通常默认为`null`,表示以Buffer形式读取,若需要文本格式,则可以设置为字符串。
- `64 * 1024`:`highWaterMark`,用于控制缓冲区大小,决定一次读取多少数据,值越大性能越好但内存占用越大。
创建可读流后,需要通过`data`事件监听器来接收读取的数据,例如:
```javascript
let fs = require("fs");
let rs = fs.createReadStream("1.txt", {
start: 0,
end: 3,
highWaterMark: 2 // 指定每次读取2个单位数据
});
rs.on("data", (data) => {
console.log(data); // 输出读取到的数据
});
rs.on("end", () => {
console.log("读完了"); // 文件读取完毕
});
```
在这个例子中,`data`事件会按设定的`highWaterMark`读取数据,直到文件结束。
**流动模式与暂停状态**:
Node.js的可读流处于流动模式,这意味着数据会在数据事件触发时连续读取,直到文件结束。流动模式下的可读流没有暂停状态,如果需要控制读取速率,通常会配合`setInterval`或`setTimeout`使用。
总结来说,Node.js的Stream API通过可读流和可写流简化了大文件操作,通过事件驱动的方式实现异步读取和写入,提高程序的效率和响应能力。理解并熟练运用Stream,是高效开发Node.js应用的重要部分。
2020-12-30 上传
2018-05-29 上传
2021-05-25 上传
点击了解资源详情
2023-06-14 上传
2020-10-20 上传
2021-02-04 上传
2021-01-20 上传
2021-03-28 上传
weixin_38682518
- 粉丝: 3
- 资源: 935
最新资源
- snake-js:带有Javascript和HTML5的Snake
- badges-and-schedules:熨斗学校实验室
- ArtCenterGame
- mywonkysounds:SoundManger 2 音板! 我的声音!
- birdinginvermont.com
- Usso:sso统一登录系统
- Design-Algorithm-Homework
- MonadicRP:GHC Haskell中的相对论编程
- monolithic-sample
- vue-shop:Vue + Element UI电商后台管理系统演示
- Neurotypical-mode:一种Chrome扩展程序,可关闭除Microsoft Stream或Manaba之外的所有选项卡
- observ-conference:实验
- module-blog-graph-ql:Magento 2 Blog GraphQL扩展。 为Magefan博客模块提供GraphQL端点
- Excel模板00现金日记账.zip
- Naive-Bayes-Classifier
- SmartFactory