Node的stream数据流你了解吗

 更新时间:2022年02月23日 16:14:53   作者:Han_Zhou_Z  
这篇文章主要为大家详细介绍了Node的stream数据流,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

一、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当中

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!       

相关文章

  • 修改NPM全局模式的默认安装路径的方法

    修改NPM全局模式的默认安装路径的方法

    这篇文章主要介绍了修改NPM全局模式的默认安装路径的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Nodejs+express+ejs简单使用实例代码

    Nodejs+express+ejs简单使用实例代码

    本篇文章主要介绍了Nodejs+express+ejs简单使用实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Linux下为Node.js程序配置MySQL或Oracle数据库的方法

    Linux下为Node.js程序配置MySQL或Oracle数据库的方法

    这篇文章主要介绍了Linux下为Node.js程序配置MySQL或Oracle数据库的方法,这里默认已经装配好了Node环境然后我们利用npm包管理工具来进行配置,需要的朋友可以参考下
    2016-03-03
  • 浅谈Node.js爬虫之网页请求模块

    浅谈Node.js爬虫之网页请求模块

    本篇文章主要介绍了浅谈Node.js爬虫之网页请求模块,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Nodejs新特性async和await的使用详解

    Nodejs新特性async和await的使用详解

    这篇文章主要介绍了Nodejs新特性async和await的使用,主要包括Es6常见语法的使用及Async、Await和Promise的示例代码,需要的朋友可以参考下
    2022-09-09
  • PostgreSQL Node.js实现函数计算方法示例

    PostgreSQL Node.js实现函数计算方法示例

    这篇文章主要给大家介绍了关于PostgreSQL Node.js实现函数计算的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • 使用Jasmine和Karma对AngularJS页面程序进行测试

    使用Jasmine和Karma对AngularJS页面程序进行测试

    这篇文章主要介绍了使用Jasmine和Karma对AngularJS页面程序进行测试的方法,以Node.js为环境,非常适合JavaScript的全栈开发时使用,需要的朋友可以参考下
    2016-03-03
  • PM2自动部署代码步骤流程总结

    PM2自动部署代码步骤流程总结

    这篇文章主要介绍了PM2自动部署代码步骤流程总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • node.js发送邮件email的方法详解

    node.js发送邮件email的方法详解

    这篇文章主要介绍了node.js发送邮件email的方法,结合实例形式详细分析了node.js发送邮件的原理、操作步骤、注意事项及常见问题解决方法,需要的朋友可以参考下
    2017-01-01
  • Cli Todo命令行todo工具使用演示

    Cli Todo命令行todo工具使用演示

    这篇文章主要为大家介绍了Cli Todo命令行todo工具使用演示示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论