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模块(五)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南