Node.js数据流

一、创建读取数据流:

fs模块的createReadStream方法的作用是创建一个读取数据的数据流

const fs = require('fs')
let str = ''//保存流中读取的数据
//1、创建数据流:读文件的数据流
let readStream = fs.createReadStream('./数据流中被读取的文件.txt')
//2、设置数据流的字符集
readStream.setEncoding('utf8')//默认为utf8
//3、注册data事件(data是事件名,类似于click事件名),若该事件被触发,说明数据流中存在了数据,数据会读到回调函数的val中,再将val保存在str中
readStream.on('data',function(val){
    str += val
})
//4、注册end事件:若该事件被触发,说明流中没有数据可读,表示读取结束
readStream.on('end',function(){
    console.log(str)
})
//5、注册error事件:若该事件被触发,说明读取数据出现了错误,输出错误信息栈中的信息
//堆:无顺序
//栈:有顺序,后进先出(类似的数据结构有函数的递归调用)
readStream.on('error',function(err){
    console.log(err.stack)//stack:栈
})
console.log('主程序结束!')//异步

二、数据流中写入数据

fs模块的createWriteStream方法,就可以创建一个写数据的数据流

const fs = require('fs')
let str = '渺沧海之一粟'//在数据流中需要写入的数据
//1、创建写入流
let writeStream = fs.createWriteStream('./数据流中被读取的文件.txt')
//2、设置写入流的字符集:先写入缓存
writeStream.write(str,'utf8')
//3、写入结束后
writeStream.end()
//4、触发事件:finish
writeStream.on('finish',function(){
    console.log('写入完成')
})
//触发error
writeStream.on('error',function(err){//err保存读取数据出现了的错误,输出错误信息栈中的信息
    console.log(err.stack)//stack:栈
})
console.log('主程序结束!')//异步

三、管道流

用于从一个流中获取数据,并通过该流输出到另一个流。

//从流中获取一个数据,通过该流输出另一个流中
const fs = require('fs')
//1、创建输入流,用于读取数据
let readStream = fs.createReadStream('./数据流中被读取的文件.txt')
//2、创建一个输出流,用于写数据
let writeStream = fs.createWriteStream('./管道输入的文件.txt')//存在即覆盖,不存在即创建并输入
//3、通过输入流调用方法,将数据送入输出流中
readStream.pipe(writeStream)//pipe:管道方法
console.log('主程序结束')

四、链式流创建压缩文件

链式是一个机制,一个流的输出连接到另一个流,并创建一个链多流操作

//压缩文件
const fs = require('fs')//操作系统中的文件
const zlib = require('zlib')//压缩与解压缩模块
let readStream = fs.createReadStream('./数据流中被读取的文件.txt')//要被压缩的文件
.pipe(zlib.createGzip())//zlib.createGzip():创建压缩包  .pipe:管道
.pipe(fs.createWriteStream('./链式数据流创建压缩.zip'))//生成一个.zip压缩文件
console.log('程序执行结束')

五、链式流创建解压文件

链式是一个机制,一个流的输出连接到另一个流,并创建一个链多流操作

const fs = require('fs')
const zlib = require('zlib')//压缩与解压缩模块

fs.createReadStream('./链式数据流创建压缩.zip')//要被解压的文件
.pipe(zlib.createGunzip())//zlib.createGunzip():创建一个解压缩对象,通过管道.pipe连接到解压缩对象
.pipe(fs.createWriteStream('./链式数据流创建解压缩.txt'))//通过管道连接到输出流
console.log('解压成功')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值