nodejs的stream有四种流类型:
可读:Readable
可写:Writable
可读可写:Duplex
操作被写入数据,然后读出结果:Transform
常用事件:
data:有数据可读时触发
end:没有数据可读触发
error:读写过程出错触发;
finish:所有数据被写入到底层系统时触发;
创建可读流:
// 注: utf8中,中文占三个字符 // var data = ‘‘; // 创建可读流二 var fs = require("fs"); var readerStream = fs.createReadStream(‘./file/333.txt‘,{ flags:‘r‘,//我们要对文件进行何种操作 start:3,//从索引为3的位置开始读 //这是我的见过唯一一个包括结束索引的 end:40,//读到索引为8结束 highWaterMark:3//缓冲区大小 }); // 设置编码为 utf8。 readerStream.setEncoding(‘UTF8‘); // 处理流事件 --> data, end, and error readerStream.on(‘data‘, function(chunk) { // data += chunk; console.log(chunk + "------"); }); readerStream.on(‘end‘,function(data){ console.log(data); }); readerStream.on(‘error‘, function(err){ console.log(err.stack); }); console.log("程序执行完毕");
管道读写操作:
//读取一个文件内容后写入另一个文件中,会覆盖原有内容 // 创建一个可写流 var fs = require("fs"); var readStream = fs.createReadStream(‘./file/demo.html‘); var writeStream = fs.createWriteStream(‘output.html‘); // 管道读写操作 // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中 readStream.pipe(writeStream); console.log("程序执行完毕"); //读取一个文件内容后写入另一个文件中,追加在原有内容后 // 追加 var read = fs.createReadStream(‘./file/1.txt‘); //设置第二个参数append var write = fs.createWriteStream(‘output.txt‘, { ‘flags‘: ‘a‘ }); //管道流读写操作 read.pipe(write); console.log(‘执行完毕‘);
原文:https://www.cnblogs.com/zmdblog/p/10351086.html