node的文件流的读取和写入

作用

nodeJS中的流最大的作用是:读取大文件的过程中,不会一次性的读入到内存中。每次只会读取数据源的一个数据块。然后后续过程中可以立即处理该数据块(数据处理完成后会进入垃圾回收机制)。而不用等待所有的数据。

这么做的原因:因为浏览器的运行内存一般情况下只有1~3g,倘若我们将一个4g的视频放到浏览器播放,此时浏览器的运行内存便无法去解析了,所以就需要文件流技术了。每次只读取一部分视频,然后运行完成后再销毁,再读取另一段视频,这样便可以完美播放视频了

创建文件流

读取

创建文件流需要利用到require中的fs模块

const fs = require("fs");
const path = require("path");
let filePath=path.resolve(__dirname,"./experiment.txt");//合并路径
fs.createReadStream(filePath,{
   

})

这样就创建了一个文件流了,通过fs模块的createReadStream函数来操作文件。

    fs.createReadStream(path,[options])
    参数一path :获取文件的路径
    参数二options:可选配置项(用于定义如何操作文件)
    配置项常用属性
	    encoding:编码方式
	    start:起始字节
	    end:结束字节
	    highWaterMark:每次读取的数量(也就是每次读几个字节)
	    autoClose:自动关闭

这样创建之后只是配置了文件流的方式,如果想操作的文件的输出方式的话,需要给它搭载事件

搭载文件流事件
const fs = require("fs");
const path = require("path");
let filePath=path.resolve(__dirname,"./experiment.txt");

let rs = fs.createReadStream(filePath,{
   
    encoding:"utf-8",
    highWaterMark:3,
    autoClose:true
})

先建立一个变量来接收返回的文件对象。通过rs.on()来给它搭载事件

rs.on()
	常用搭载事件:
    open:  打开的时候运行的事件
    close :关闭的时候运行的事件
    error:  发生错误的时候出发的事件
    data:  获取到一部分数据后触发
    end:所有数据读取完后触发
    pause(): 暂停
    resume(): 继续

举几个例子:
open()事件

const fs = require("fs");
const path = require("path");

let filePath=path.resolve(__dirname,"./experiment.txt");

let rs = fs.createReadStream(filePath,{
   

})

rs.on("open",()=>{
   
    console.log("打开文件流");
})

控制台打印
在这里插入图片描述
error()事件

const fs = require("fs");
const path = require("path");

let filePath=path.resolve<
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值