码迷,mamicode.com
首页 > Web开发 > 详细

node.js(三 stream 管道流 模块化 函数)

时间:2018-12-06 20:53:52      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:文件   stream   tran   流操作   接收   管道   on()   console   执行   

一、stream  

  stream是一个抽象的接口,node中有很多对象实现了这个接口。

  stream有四种流类型: Readable: 可读操作;  Writable: 可写操作;  Duplex: 可读可写操作;  Transform:  操作被写入数据,然后都出结果;

  所有的stream对象独有EventsEmitter的实例,常用的事件有:  

      data: 当有数据可读时触发;

      end:  没有更多的数据可读时触发;

      error:  在接收和写入过程中发生错误时触发;

      finish:  所有数据已被写入到底层系统时触发;

 

  1、从流中读取数据

   例如: var  fs = require(‘fs‘);

       var data = ‘‘;

      var readerStream = fs.createReadStream(‘demo.txt‘);    //创建可读的流

      //开始执行读取的事件

      readerStream.on(‘data‘,  function(chunk){

        data += chunk;

      })

      readerSteam.on(‘end‘,   function(){

        console.log(data)

      })

      readerStream.on(‘error‘,  function(err){

        console.log(err.stack)

      })

      

  2、写入流

    例如: 

      var fs = require(‘fs‘);

      var  data = ‘要写入的内容‘; 

      var writerStream = fs.creamWriteStream(‘demo.txt‘);       //写入demo.txt 文档内

      writeStream.write(‘data‘,  ‘UTF8‘);    //使用utf-8格式写入数据;

      writeStream.end();     //标记文件末尾;

      writeStream.on(‘finish‘,   function(){

         console.log(‘写入完成‘);

      })

      writeStream.on(‘error‘,  function(){

        console.log(err.stack);

      })

      

  3、管道流

  管道提供了一个从输出流到输入流的机制; 通常用于从一个流中回去数据,然后传递到另一个流中。

  例如; 

    var fs = require(‘fs‘);

    var readerStream = fs.creamReadStream(‘demo1.txt‘);

    var writeSteam = fs.creamWriteStream(‘demo2.text‘);

    readerStream.pip( writeStream);

 

  4、链式流

  链式是通过连接输出流到另一个流并创建多个流操作链的机制。链式流一般用于管道操作。

  例如: 

    var fs =  require(‘fs‘);

    var zlib = require(‘fs‘);

    var readerStream = fs.createReadStream(‘demo1.txt‘);

    readerStream.pip(zlib.createGzip())     //将文件进行压缩demo.txt.gz

          .pip(fs.createWriteStream(‘demo1.txt.gz‘))

    fs.createReadStream(‘demo1.txt.gz‘).pip(zlib.createGunzio())   //将压缩文件进行解压

          .pip(fs.createWriteStream(demo.txt))    

 

node.js(三 stream 管道流 模块化 函数)

标签:文件   stream   tran   流操作   接收   管道   on()   console   执行   

原文地址:https://www.cnblogs.com/mufc/p/10078348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!