NodeJS Stream(流)

常用的流的操作:

(1)从流中读取数据:
首先准备一个input.txt组件,任意输入一些内容
实例:

/*从流中读取数据*/ 
var fs = require('fs'); 
var data = ''; 
// 创建可读流 
var readerStream = fs.createReadStream('./input.txt'); 
// 设置编码为UTF-8 
readerStream.setEncoding('UTF8'); 
// 处理流事件 --> data,end, and, error 
readerStream.on('data', function(chunk){ 
  data += chunk; 
  console.log(chunk) 
}); 
// 读取数据完毕执行 
readerStream.on('end',function(){ 
  console.log(data); 
}); 
// 读取文件出错的时候执行 
readerStream.on('error', function(err){ 
  console.log(err.stack); 
}); 
console.log("程序执行完毕"); 

(2)写入流

/* 写入流 */
var output = require('fs');
var outputData = '我是要写入到input.txt文件中的数据';
// 创建一个可以写入的流,写入到文件input.txt中
var writerStream = output.createWriteStream('./input.txt');
// 使用 UTF8 编码写入数据
writerStream.write(outputData, 'UTF8');
// 处理流事件 --> 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 inputStream = fs.createReadStream('./input.txt');
// 创建一个可写流
var outputStream = fs.createWriteStream('./output.txt');
// 管道读写操作
// 读取input.txt文件内容,并将内容写入到output.txt文件中
inputStream.pipe(outputStream);
console.log('程序执行完毕');

(4)链式流:通过连接输出流到另外的一个流并创建多个流操作链的机制。链式流一般用于管道操作。(大多数结合管道进行操作)
实例(压缩文件):

/* 链式流(压缩和解压文件) */
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('程序压缩完毕');

实例(解压文件):

/* 链式流(解压文件) */
var fs = require('fs');
var zlib = require('zlib');
// 解压input.txt.gz文件为input1.txt
fs.createReadStream('./input.txt.gz').pipe(zlib.createGunzip()).pipe(fs.createWriteStream('./input1.txt'))
console.log('文件解压完成')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值