美文网首页我爱编程
Node.js stream 流的简单认识

Node.js stream 流的简单认识

作者: 611383f71c9e | 来源:发表于2018-02-03 23:44 被阅读0次

流的概念

流(stream)在 Node.js 中是处理流数据的抽象接口。在一个应用程序中,流是一组有序的、有起点和终点的字节数据的传输手段。

Node.js 中有四种基本的流类型:

  • Readable - 可读流 (例如 fs.createReadStream()).
  • Writable - 可写流 (例如 fs.createWriteStream()).
  • Duplex - 可读可写流 (例如 net.Socket).
  • Transform - 操作写数据,然后读取结果 (例如 zlib.createDeflate()).

可读流 Readable:

fs.ReadStream 类,实现了 stream.Readable 接口的对象,将对象数据读取为流数据。

使用ReadStream对象读取文件:

在fs模块中,可以使用 createReadStream 方法创建一个将文件内容读取为流数据的 ReadStream 对象。

fs.createReadStream(path,[options])

  • path:被读取的文件的完整路径和文件名

  • options 可使用属性,包括 flags,encoding,start,end, highWaterMark

    flags 打开文件要做的操作,默认为'r'

    encoding 默认为null

    start 开始读取的索引位置

    end 结束读取的索引位置(包括结束位置)

    highWaterMark 读取缓存区默认的大小64kb

简单使用:
var fs = require('fs');
var file = fs.createReadStream('test.txt', {start: 3, end: 6});
file.on('open', function(){
    console.log('开始读文件');
});
file.on('data', function(data){
   console.log(data); 
});
file.on('end', function(data){
    console.log('文件读取已完成');
});
file.on('close', function(){
    console.log('文件关闭');
});
file.on('error', function(err){
    console.log('文件读取失败');
});

可写流 Writable:

fs.WriteStream 类,实现了 stream.Writable 接口的对象,将流数据写入到对象中。

使用 WriteStream 对象写入文件:

fs.createWriteStream(path,[options])

  • path:被读取的文件的完整路径和文件名

  • options 可使用属性,包括 flags,encoding, highWaterMark

    flags 打开文件要做的操作,默认为'w'

    encoding 默认为utf8

    highWaterMark 写入缓存区的默认大小16kb

简单使用:
var fs = require('fs');
var file = fs.createReadStream('test.txt');
var out = fs.createWriteStream('test02.txt');
file.on('data', function(data){
    out.write(data);
});
out.on('open', function(){
    console.log('被写入文件已打开');
});
file.on('end', function(){
    out.end('end',function(){
        console.log('文件写入完毕');
    })
})

可读可写流 Duplex

Duplex 流,也称为双工流,是同时实现了 Readable 和 Writable 接口的流,可以在统统一个对象上同时可读可写。

Duplex 流的实例包括了:

TCP sockets 网络模块

zlib streams 压缩和解压缩模块

crypto streams 加密模块

转换流 Transform

Transform streams 是一种 Duplex 流,它的输出是从输入中计算出来的。

Transform 流的实例包括:

zlib streams 压缩和解压缩模块

crypto streams 加密模块


_ 感谢浏览,以上是自己对 stream 的一些粗浅认知,后续会继续补充。

参考:node.js 中文网

相关文章

  • Node.js stream 流的简单认识

    流的概念 流(stream)在 Node.js 中是处理流数据的抽象接口。在一个应用程序中,流是一组有序的、有起点...

  • NodeJs中的stream(流)- 基础篇

    一、什么是Stream(流) 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract i...

  • Node.js学习笔记:Stream(流)

    概念 Stream模块 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract inte...

  • node - 流 浅析

    概念 流(stream)是 Node.js 中处理流式数据的抽象接口。 stream 模块用于构建实现了流接口的对...

  • Stream流

    流式思想 Stream流的简单尝试 传统for循环遍历的方法 Steam流的方式 获取stream流 stream...

  • node.js中流(Stream)的深度剖析

    流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。strea...

  • NodeJS学习笔记——Stream(流)

    流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。Node....

  • nodejs笔记4(steam)

    流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。 stre...

  • Node.js-Stream

    Stream Node.js提供了四种流 Readable - 可读的流 (例如 fs.createReadStr...

  • Stream操作

    1、创建Stream流 2、stream和parallelStream的简单区别 stream是顺序流,由主线程按...

网友评论

    本文标题:Node.js stream 流的简单认识

    本文链接:https://www.haomeiwen.com/subject/xnmpzxtx.html