node.js之Stream

管道流

管道流:我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。

  • 注意
    fs.createReadStream fs.createWriteStream fs.appendFile如果参数文件不存在会自动创建文件
// pipStream.js
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('程序执行完毕');

上面这种复方法直接把output.txt内的文件内容都覆盖掉了!!!!好消息可以使用appendFile()在原有的文件内容基础上添加内容,下面是优化后的

  • 需求:在文件里添加内容(文件和新增内容)
//如果你的需求不是复制一个文件里的内容合并到另一个文件,而是 在另一个文件里直接添加字符串只需要以下就行
var fs = require('fs');
 fs.appendFile('output.txt','我是新添加的字符串内容',function(err){
     if(err){
         console.log(err,'报错了!')
     }
     console.log('数据被添加到文件的末尾');
});

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

  • 需求:复制一个文件的内容添加到另一个文件(文件和文件之间)

var fs = require('fs');

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

// 设置编码为 utf8。
readerStream.setEncoding('UTF8');

//处理流事件 --> data, end, and error
readerStream.on('data',function(chunk){//chunk为所读文件的内容
    data+=chunk;//把文件内容赋值给data
    console.log(chunk,'chunk');
});

readerStream.on('end',function(){
//为了得到纯字符串类型的数据所有在end函数内执行

// fs.appendFile(文件名, 数据, 编码, 回调函数(err));
    fs.appendFile('output.txt',data,function(err){
        if(err){
            console.log(err,'报错了!')
        }
        console.log('数据被添加到文件的末尾');
    });
    
});

readerStream.on('error',function(err){
    console.log(err.stack);
})

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

对于node.js刚开始学习所以知道的不多,有写的不对的地方欢迎指正!谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值