Node.js(stream流)
流,会把数据分成64kb的小文件传输
流数据的获取
- pipe 管道 读取1.txt写入到2.txt
- data
- end
流的方式读取文件
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(count);
console.log(str);
})
//读取失败
readStream.on('error',function(err){
console.log(err);
})
流的方式写入文件
fs.createWriteStream
var fs = require("fs");
var data = '我是从数据库获取的数据,我要保存起来11\n';
// 创建一个可以写入的流,写入到文件 output.txt 中
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('写入失败');
})
管道流
读取写入流管道pipe
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传
递到另外一个流中。
如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(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("程序执行完毕");
buffer缓冲区 二进制的类
内部传递文件快速高效,不需转码