nodejs之Stream(流)
来源:互联网 发布:cfd软件百花齐放论文 编辑:程序博客网 时间:2024/05/17 23:58
/*
Nodejs之Stream
Stream 是一个抽象接口,Node中有很多对象实现了这个接口。例如,对http服务器发起请求的request对象就是一个Stream,还有stdout
Nodejs-Stream 有四种流类型
Readable -表示可读操作
Writable -表示可写操作
Duplex -表示可读写操作
Transform -操作被写入数据,然后读出结果
所有的Stream对象都是EventEmitter的实例,常用的事件有
data -当有数据可读时触发
end -没有更多数据可读的时候触发
error -在接受和写入过程中发生错误时触发
finish -所有数据已经被写入到底层系统时触发
从流中读取数据
栗子:
var fs = require("fs");
var data ='';
//创建可读流
var readStream = fs.createReadStream('input.txt');
//设置编码格式
readStream.setEncoding('UTF-8');
//处理流事件-->data 、end、error
readStream.on('data',function(chunk){
data += chunk;
});
readStream.on('end',function(chunk){
console.log(chunk);
});
readStream.on('error',function(chunk){
console.log(err.stack);
});
console.log("程序执行完毕");
写入流
栗子:
var fs = require("fs");
var data ="这是我的第一个nodejs的写入";
//创建一个写入流,写到文件output.txt中
var writeStream = fs.createWriteStream("output.txt");
//设置编码格式
writeStream.setEncoding("UTF-8");
//标记文件末尾
writeStream.end();
//处理流事件--data,end,error
writeStream.on('finish',function(){
console.log('写入完成');
});
writeStream.on('error',function(){
console.log(err.stack)
});
console.log("程序执行完毕");
管道流(主要是大文件的复制)
管道提供了输出流到输入流的机制,通常我们用于一个流中获取数据并将数据传递到另外一个流中
栗子:
var fs = require("fs");
//创建一个可读流
var readStream = fs.createReadStream('input.txt');
//创建一个可写流
var writeStream = fs.createWriteStream('output.txt');
//管道读写操作
//读取input.txt文件内容,并将内容写入到output.txt文件中
readStream.pipe(writeStream);
console.log("程序执行完毕");
链式流
链式是通过连接输出流到另外一个流并创建多个对个流操作的机制,
链式流一般用于管道操作
栗子:
//用管道和链式来压缩和解压文件
var fs = require("fs");
var zlib = require("zlib");
//压缩input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'));
console.log("文件压缩完成");
//解压input.txt.gz 文件为input.txt
fs.createReadStream('input.txt.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('input.txt'));
console.log("文件解压完成")
*/
Nodejs之Stream
Stream 是一个抽象接口,Node中有很多对象实现了这个接口。例如,对http服务器发起请求的request对象就是一个Stream,还有stdout
Nodejs-Stream 有四种流类型
Readable -表示可读操作
Writable -表示可写操作
Duplex -表示可读写操作
Transform -操作被写入数据,然后读出结果
所有的Stream对象都是EventEmitter的实例,常用的事件有
data -当有数据可读时触发
end -没有更多数据可读的时候触发
error -在接受和写入过程中发生错误时触发
finish -所有数据已经被写入到底层系统时触发
从流中读取数据
栗子:
var fs = require("fs");
var data ='';
//创建可读流
var readStream = fs.createReadStream('input.txt');
//设置编码格式
readStream.setEncoding('UTF-8');
//处理流事件-->data 、end、error
readStream.on('data',function(chunk){
data += chunk;
});
readStream.on('end',function(chunk){
console.log(chunk);
});
readStream.on('error',function(chunk){
console.log(err.stack);
});
console.log("程序执行完毕");
写入流
栗子:
var fs = require("fs");
var data ="这是我的第一个nodejs的写入";
//创建一个写入流,写到文件output.txt中
var writeStream = fs.createWriteStream("output.txt");
//设置编码格式
writeStream.setEncoding("UTF-8");
//标记文件末尾
writeStream.end();
//处理流事件--data,end,error
writeStream.on('finish',function(){
console.log('写入完成');
});
writeStream.on('error',function(){
console.log(err.stack)
});
console.log("程序执行完毕");
管道流(主要是大文件的复制)
管道提供了输出流到输入流的机制,通常我们用于一个流中获取数据并将数据传递到另外一个流中
栗子:
var fs = require("fs");
//创建一个可读流
var readStream = fs.createReadStream('input.txt');
//创建一个可写流
var writeStream = fs.createWriteStream('output.txt');
//管道读写操作
//读取input.txt文件内容,并将内容写入到output.txt文件中
readStream.pipe(writeStream);
console.log("程序执行完毕");
链式流
链式是通过连接输出流到另外一个流并创建多个对个流操作的机制,
链式流一般用于管道操作
栗子:
//用管道和链式来压缩和解压文件
var fs = require("fs");
var zlib = require("zlib");
//压缩input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'));
console.log("文件压缩完成");
//解压input.txt.gz 文件为input.txt
fs.createReadStream('input.txt.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('input.txt'));
console.log("文件解压完成")
*/
阅读全文
0 0
- nodejs之Stream(流)
- nodejs入门(05)-Stream(流)
- NodeJS-stream流
- NodeJS Stream的双工流
- nodejs基础 Stream流2
- Nodejs数据流(Stream)手册
- nodejs stream
- nodejs stream 手册
- nodejs Stream使用手册
- nodeJS之流stream
- nodeJS之流stream
- stream之并行流
- nodeJS中大文件读写操作--Stream流
- NodeJS学习系列课程笔记(NodeJs Stream 的相关使用方法)
- nodejs Stream使用中的陷阱
- nodejs中流(stream)的理解
- nodejs中流(stream)的理解
- nodejs中流(stream)的理解
- 在NAND FLASH上建立YAFFS2文件系统
- Spring表达式
- 下载文件名空格变加号、乱码、被截断问题解决
- java.sql.SQLException: 无效的列索引
- [HDU](2147)kiki's game ---找规律博弈(博弈)
- nodejs之Stream(流)
- Android ptrace进程注入原理
- PCL滤波II
- 用Eclipse搭建SSM+Maven+Shiro环境
- HDU 1171
- monkey-GUI代码编辑分享
- springMvc 如何通过注解@Value 读取配置文件中的内容(.properties)
- 在给定的序列中寻找两数之和为定值m的情况--对算法复杂度的分析与优化
- Linux du命令和df命令区别-转