Stream 有四种流类型:
Readable - 可读操作。
ps: var Readable = require('stream').Readable;
var readStream = new Readable();
readStream.push('I');
readStream.pipe(writeStream); // 将读取流中的数据复制给写入流
Writable - 可写操作。
ps: var Writable = require('stream').Writable;
var writable = new Writable();
writeStream._write = function(chunk, encode, cb){
console.log(chunk.toString());
cb();
});
Duplex - 可读可写操作.
Transform - 操作被写入数据,然后读出结果。
Stream对象事件类型
data : 当有数据可读时触发。
end : 没有更多的数据可读时触发。
error : 在接收和写入过程中发生错误时触发。
finish : 所有数据已被写入到底层系统时触发。
ps: var readStream = fs.createReadStream('stream_copy_image.js');
readStream.on('data', function(chunk){ console.log(Buffer.isBuffer(chunk)); })
读取流中数据 createReadStream
readStream = fs.createReadStream('logo.png'); // 参数是读取的文件
readStream.pause() 停止读取数据
readStream.resume 恢复读取数据
写入流 createWriteStream
writeStream = fs.createWriteStream('logo-write.png'); // 参数是将要写入的文件
writeStream.end() ;
writeStream.write('chunk'); 写入内容 false(还在缓存,还没写入内存地址)
事件:drain 已经写入目标地址
管道流 pipe()
readerStream.pipe(writerStream); 将读取流复制到写入流