Node.js Stream(流) 简介说明


摘要:
下文讲述Node.js中Stream的用法,如下所示:


Stream是Node.js中操作流类型的对象,在Node.js中应用广泛。

Stream是一个抽象接口,在Node中主要对流数据进行 读写操作,Stream可应用于http、套接字、文件、数据方面的操作。

Stream常见的四种流操作类型,如下:
1.Readable 只读流
2.Writable 只写流
3.Duplex 可读可写流
4.Transform 当数据被写入时候,读出结果

Stream常用事件如下:
data:当存在数据可读时发生
end: 无可读数据时发生
error:当操作过程中发生错误时触发
finish:当数据被写入操作系统底层时发生


Stream举例应用

1.从文件”test.txt”中读取流Stream

    
    var fs = require("fs");
    var data = '';

    //创建可读流
    var readerStream = fs.createReadStream('test.txt');

    //设置流读取编码为 utf8。
    readerStream.setEncoding('UTF8');

    //处理流事件 --> data, end, and error
    readerStream.on('data', function(t) {
       data += t;
    });

    readerStream.on('end',function(){
       console.log(data);
    });

    readerStream.on('error', function(err){
       console.log(err.stack);
    });

     console.log("读取流操作完毕!");

2.写入流值文件test.txt

 
   var fs = require("fs");
  var data = '这是一个sqlserver blog mssql教程网';

//申请一个写入流,写入到文件 test.txt 中
var writerStream = fs.createWriteStream('test.txt');

// 使用 utf8 编码写入数据
writerStream.write(data,'UTF8');

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

// 处理流事件 --> data, end, and error
writerStream.on('finish', function() {
    console.log("写入流完成");
});

writerStream.on('error', function(err){
   console.log(err.stack);
});

console.log("流写入完毕");


3.将“读取流”写入“写入流”


 var fs = require("fs");

//新建一个读取流
var readerStream = fs.createReadStream('read.txt');

//新建一个写入流
var writerStream = fs.createWriteStream('write.txt');

//管道读写操作
//将read.txt文件内容写入至write.txt
readerStream.pipe(writerStream);

console.log("操作完毕!");