zoukankan      html  css  js  c++  java
  • Node.js Stream

    Stream是一个抽象接口,Node中很多对象实现了这个接口,例如:http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)。

    Node.js,Stream有四种流类型:

    Readable-可读操作  Writable-可写操作  Duplex-可读可写操作  Transform-操作被写入数据,然后读出结果。

    所有的Stream对象都是EventEmitter的实例。常用的事件有:

    data-当有数据可读时触发  end-没有更多的数据可读时触发  error-在接收和写入过程中发生错误时触发  finish-所有数据已被写入到底层系统时触发。


    从流中读取数据

    var fs = require("fs");
    var data = '';
    
    //创建可读流
    var readerStream = fs.createReadStream('input.txt');
    
    //设置编码为utf8
    readerStream.setEncoding('UTF8');
    
    //处理流事件 -->data, end , and error
    readerStream.on('data', function(chunk) {
       data += chunk; 
    })
    
    readerStream.on('end', function(){
       console.log(data); 
    })
    
    readerStream.on('error', function(err) {
       console.log(err.stack); 
    })
    
    console.log("程序执行完毕");


    写入流

    创建main.js文件,代码如下:

    var fs = require("fs");
    var data = '菜鸟教程官网地址:www.runoob.com';
    
    //创建一个可以写入的流,写入到文件output.txt中
    var writerStream = fs.createWriteStream('output.txt');
    
    //使用utf8编码写入数据。
    writerStream.write(data, 'UTF8');
    
    //标记文件末尾
    writerStream.end();
    
    //处理流事件 -->data, end ,and error
    writerStream.on('finish', function() {
        console.log("写入完成。");    
    });
    
    writerSteam.on('error', function(err) {
        console.log(err.stack);    
    });
    
    console.log("程序执行完毕");


     

    创建main.js文件,代码如下:
    var fs = require("fs");
    
    //创建一个可读流
    var readerStream = fs.createReadStream('intput.txt');
    
    //创建一个可写流
    var writerStream = fs.createrWriteStream('output.txt');
    
    //管道读写操作
    //读取input.txt内容,并将内容写入到output.txt文件中。
    readerSteam.pipe(writerStream);
    
    console.log("程序执行完毕");


    链式流

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

    接下来我们就是用管道和链式来压缩和解压文件。

    创建compress.js文件,代码如下:

    var fs = require("fs");
    var zlib = require("zlib");
    
    //压缩input.txt文件为input.txt.gz
    fs.createReadStream('input.txt')
       .pipe(zlib.createGizp())
       .pipe(fs.createWriteStream('input.txt.gz'));
    
    console.log("文件压缩完成。");

    var fs = require("fs");
    var zlib = require('zlib');
    
    //解压input.txt.gz文件为inpu.txt
    fs.createReadStream('input.txt.gz')
       .pipe(zlib.createGunzip())
       .pipe(fs.createWriteStream('input.txt'));
    
    console.log("文件解压完成");

  • 相关阅读:
    使用 ASP.NET Core MVC 创建 Web API(五)
    使用 ASP.NET Core MVC 创建 Web API(四)
    使用 ASP.NET Core MVC 创建 Web API(三)
    使用 ASP.NET Core MVC 创建 Web API(二)
    使用 ASP.NET Core MVC 创建 Web API(一)
    学习ASP.NET Core Razor 编程系列十九——分页
    学习ASP.NET Core Razor 编程系列十八——并发解决方案
    一个屌丝程序猿的人生(九十八)
    一个屌丝程序猿的人生(九十七)
    一个屌丝程序猿的人生(九十五)
  • 原文地址:https://www.cnblogs.com/lilinzhiyu/p/8495431.html
Copyright © 2011-2022 走看看