欢迎来到代码驿站!

NodeJS

当前位置:首页 > 脚本语言 > NodeJS

Node的stream数据流你了解吗

时间:2023-02-21 13:45:23|栏目:NodeJS|点击:

一、Node的数据流(stream)

1、处理缓存的方式

(1)一次性全部读取,然后再进行处理。缺点是大文件处理非常耗时,优点是过程直观

(2)读取一块处理一块.优点是提高程序的性能

2、四种类型的流

Readable - 其是用于读操作

Writable - 用在写操作

Duplex - 其可以用于读取和写入操作

Transform - 输出基于输入的地方进行计算的一种双相流

每种流都是事件触发器,当某个流被调用时,就会触发,抛出一个事件:

'data'事件:表示流中有数据可以读取

'end'事件:表示流中没有数据可以读取

'error'事件:读写数据错误时触发

'finish'事件:数据刷新到底层系统时触发

const fs = require('fs');
let str_data = '';
//创建读数据的流
let readerStream = fs.createReadStream('./test.txt');
//设置流的编码格式
readerStream.setEncoding('utf8');
//给流绑定事件
readerStream.on('data',function (chunk) {
    str_data += chunk
})
readerStream.on('end',function (){
    console.log("读取的数据是:",str_data)
})
readerStream.on('error',function (err){
    console.log(err.stack)
})
console.log('-----End-----')
//    读取的数据是: 离离原上草,
//    一岁一枯荣;
//    野火烧不尽,
//    春风吹又生。
const fs = require('fs');
//创建一个读数据的流
let readerStream = fs.createReadStream('./test.txt')
//创建一个写数据的流
let writerStream = fs.createWriteStream('./out.txt')
//创建管道流
readerStream.pipe(writerStream)
console.log('----End----')
//可以完成复制,将test文件中的内容复制到out文件中

3、zlib模块:用于文件的压缩与解压缩

(1)压缩方法:zlib.createGzip()

const fs = require('fs');
const zlib = require('zlib');
//创建一个读数据的流
let readerStream = fs.createReadStream('./test.txt')
                     .pipe(zlib.createGzip())
                     .pipe(fs.createWriteStream('./text.zip'))
readerStream.on('error',function (err) {
    console.log(err.stack)
})
console.log('----End----')
//创建一个名为text.zip的压缩包

(2)解压缩方法:zlib.createGunzip()

const fs = require('fs');
const zlib = require('zlib');
fs.createReadStream('./test.zip')
  .pipe(zlib.createGunzip())
  .pipe(fs.createWriteStream('./db.txt'))
//解压名为test.zip的压缩包,并将其中的内容复制到db.txt当中

总结

上一篇:开发Node CLI构建微信小程序脚手架的示例

栏    目:NodeJS

下一篇:没有了

本文标题:Node的stream数据流你了解吗

本文地址:http://www.codeinn.net/misctech/226188.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有