Node.js fs模块(五)
2022/1/23 17:04:39
本文主要是介绍Node.js fs模块(五),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
之前介绍了fs模块的文件可读流,本节继续介绍fs模块的文件可写流。
fs.WriteStream继承了stream.Writable,并重写了_write方法,实现了文件可写流
我们一般通过fs.createWriteStream来创建一个文件可写流对象。
目录
创建文件可写流对象
使用文件可写流对象
文件可写流的常用事件
open事件
error事件
finish事件
close事件
drain事件
创建文件可写流对象
const fs = require('fs') const path = require('path') const ws = fs.createWriteStream(path.join(__dirname, 'test.txt'), { fd: null, flags: 'r+', mode: 438, encoding: 'utf-8', start: 0, autoClose: true, highWaterMark: 2 })
fs.createWriteStream方法有两个参数,path和options
path就是要被写入数据的文件的路径
options就是可写流对象的一些参数
参数作用:
1、打开文件(打开文件,需要指定path或options.fd,options.flags,options.mode,options.encoding)
2、写入数据(写入数据的位置信息,从文件哪里开始start写入)
3、关闭文件(当写入完毕后,是否需要自动关闭文件autoClose)
还有可写流对象缓冲区的水位线highWaterMark
使用文件可写流对象
文件可写流的作用主要就是向文件中写入数据,写入数据的方式就是使用可写流的内置方法write和end。
其中write用于写入数据,end也可用于写入数据,但是其根本作用是通知可写流对象写入结束。
文件可写流的常用事件
open事件
创建可写流对象的同时就会打开文件,而打开文件就会触发可写流对象的open事件
监听open事件的主要作用就是获取文件描述符fd
error事件
当可写流对象创建或使用过程中发生任何异常时,都会触发error事件,我们一般监听error事件来处理异常情况
finish事件
当ws.end方法执行后,表示可写流对象停止写入了,此时表示写入结束,会触发finish事件
close事件
当可写流对象写入结束(即end方法执行),且autoClose为true时(即表示自动关闭文件时),就会触发close事件
end执行和autoClose为true,二者缺一都不会触发close事件
需要注意的是,我们无论是文件可写流的open事件,还是close事件,其实目标都不是文件本身,而是更多关注的是可写流对象。
即如果我们自己使用fs.close(fd)来关闭文件,无法触发文件可写流的close事件
drain事件
drain事件是可写流独有的事件,它的触发时机是,当可写流对象缓冲区数据量超过了highWaterMark水位线(state.needDrain被置为true),之后缓冲区数据被消费清空后,就会触发drain事件。
drain事件通常不会单独使用,通常是在生产者生产速度 快于 消费者消费速度时,作为报警器来提示生产者停止生产用的。
而drain事件正是协同生产速度和消费速度的背压机制的核心。
下面一节,我们来介绍背压机制。
这篇关于Node.js fs模块(五)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南
- 2024-11-16Vue3学习:从入门到初级实战教程