登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Programming
  3. Node.js
  4. 正文

Node.js速学之-流模块

2015-12-31
参考文献:[1][EN]Georgo Ornbo.傅强.陈宗斌. Node.js入门经典[M]. 北京:人民邮电出版社.2013.4-1

UNIX系统中,流是标准概念,有:标准输入流/标准输出流/标准错误流
这些流都是标准接口,所以程序可以从流中读写。
一、可读流

var fs = require ('fs');
var stream = fs.ReadStream('file.txt');
var dataa = '';
stream.setEncoding('utf8');
stream.on('data',function(chunk){//可读流侦听事件,其实是EventEmitter实例,收到数据时会触发
   //经过测试,侦听的‘data’消息的名称不能改变
    dataa+=chunk;
    console.log('read some data');
});
stream.on('close',function() {//可读流侦听事件,触发关闭事件
    console.log('all the data is read');
    console.log(dataa);
})

终端:

read some data
all the data is read
AA,BB
CC
SS,SSS

Process finished with exit code 0

二、可写流

var fs = require ('fs');
var streamread = fs.ReadStream('file.txt');
var streamwrite= fs.WriteStream('write.txt');
streamread.setEncoding('utf8');
streamread.on('data',function(chunk){
    streamwrite.write(chunk);//写入
    console.log('read and write some data');
});
streamread.on('close',function(){
    console.log('all the data id read');
    streamwrite.end();//关闭写流
});

终端:

read and write some data
all the data id read

三、管道连接流
输入和输出通过管道传输在Node.js中比较常见,可读和可写流他们之间通过管道传输数据的方法也较常用。

var fs = require ('fs');
var streamread = fs.ReadStream('file.txt');
var streamwrite= fs.WriteStream('write.txt');
streamread.pipe(streamwrite);
//缓冲区被用于读写流中的数据

成功拷贝。
四、音频流
在HTTP模块中,响应对象实际上是一个可写流,它可让文件已可读流的方式写入,然后通过管道成为进入响应对象的可写流。、

var http = require ('http');
fs = require('fs');
http.createServer(function(request,response){
    var mp3 = 'music.mp3';
    var stat = fs.statSync(mp3);
    response.writeHead(200,{'Content-Type':'audio/mpeg','Content-Length':'stat.size'});
    var readableStream=fs.createReadStream(mp3);
    readableStream.pipe(response);
}).listen(3000);
//此实例失败,原因未知,以后再探索

pipe()管道将可读流和可写流连接到一起,它会为我们处理暂停会恢复。而且,管道可以连接到多个流上。
流,数据在整个操作完成之前就可以使用了。

标签: 暂无
最后更新:2016-01-24

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号