nodejs stream
来源:互联网 发布:windows进入安全模式 编辑:程序博客网 时间:2024/05/03 23:55
简单的流读写实现
var Readable = require('stream').Readable;var Writable = require('stream').Writable;var rs = Readable();var ws = Writable();var c = 97 - 1;rs._read = function () { if (c >= 'z'.charCodeAt(0)) return rs.push(null); setTimeout(function () { rs.push(String.fromCharCode(++c)); }, 1000);};rs.pipe(ws);ws._write = function (chunk, enc, next) { process.stdout.write(chunk); next();};process.on('exit', function () { console.error('\n_read() called ' + (c - 97) + ' times');});process.stdout.on('error', process.exit);
Transform Stream 实现字符过滤
const Transform = require('stream').Transform;const util = require('util');const fs= require('fs');function MyTransform(filter) { if (!(this instanceof MyTransform)) return new MyTransform(null); Transform.call(this, null); this.temp = new Buffer(6);//utf-8最多6个字节 this.filter = filter;//要过滤的字符}util.inherits(MyTransform, Transform);MyTransform.prototype._transform = function (data, encoding, callback) { let len=0;//数据长度(单位字节) 用于递减 let blen=0;//数据长度(单位字节)最终从temp提取的长度 let c=null;//解析出的字符 for (let b of data) { //如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数 if(len == 0){ if(b<128){ len=1; }else if(b<224){ len=2; }else if(b<240){ len=3; }else if(b<248){ len=4; }else if(b<252){ len=5; }else if(b<254){ len=6; }else{ continue; } blen=len; }else{ //其余各字节均以10开头,这边是为了排错 if( b<128 || 191<b){ len=0; blen=0; continue; } } len--; this.temp[blen-len-1]=b; if(len < 1){ c = this.temp.slice(0, blen); if(c.toString()!=this.filter){ this.push(c); } } } callback();};//testconst is = fs.createReadStream('a.txt');//过滤字符‘a’is.pipe(new MyTransform('a')).pipe(process.stdout);
0 0
- nodejs stream
- nodejs stream 手册
- nodejs Stream使用手册
- NodeJS-stream流
- nodeJS之流stream
- nodeJS之流stream
- nodejs Stream使用中的陷阱
- nodejs中流(stream)的理解
- Nodejs数据流(Stream)手册
- nodejs中流(stream)的理解
- NodeJS Stream的双工流
- nodejs之Stream(流)
- nodejs中流(stream)的理解
- nodejs基础 Stream流2
- [前端] nodejs中流(stream)的理解
- 理解nodejs的stream和pipe机制
- NodeJS 使用Stream 方式 copy 大文件
- nodejs Stream使用手册——pipe
- Unity脚本开发之对象的基本操作
- TensorFlow与TensorLayer
- 最短路径(5)--poj1860(最短路的应用-求正权回路)
- 项目框架收集
- 【Android】Android中Activity生命周期和横竖屏切换周期说明
- nodejs stream
- Android错误-error:Foundtext""whereitemtagisexpected的解决方法
- PHP中通过ODBC连接SQL Server数据库
- 详谈 Filter 过滤器
- 一道蓝桥杯C语言模拟题
- 梦幻天龙
- Day8request&response
- HelpDesk/ServiceDesk
- 20161125