管道流

管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传
递到另外一个流中

clipboard.png
如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个
桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。
以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。

fs.createReadStream

读取流

const fs = require('fs');
var readStream = fs.createReadStream('input.txt');
var str = ''; //流
var count = 0; //次数
readStream.on('data',function(chunk){
    str += chunk;
    count++;
})

// 读取完成
readStream.on('end',function(chunk){
    console.log(str);
    console.log(count)
})
// 读取错误
readStream.on('error',function(err){
    console.log(err)
})

clipboard.png

fs.createWriteStream

写入流

var fs = require('fs');
var data = '我是从数据库里获取的数据,我要保存起来11\n';

var writerStream = fs.createWriteStream('output.txt');
for(var i=0;i<100;i++){
    writerStream.write(data,'utf8');
}
writerStream.end();
writerStream.on('finish',function(){
    console.log('写入完成')
})

writerStream.on('error',function(){
    console.log('写入失败')
})

clipboard.png

pipe管道

var fs = require("fs");


// 创建一个可读流
var readerStream = fs.createReadStream('input.txt');

// 创建一个可写流
var writerStream = fs.createWriteStream('output.txt');

// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);

console.log("程序执行完毕");

渣渣辉
1.3k 声望147 粉丝