nodejs笔记之流(stream)

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('执行完毕');

猜你喜欢

转载自www.cnblogs.com/zmdblog/p/10351086.html