管道流
管道流:我们用一根管子(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刚开始学习所以知道的不多,有写的不对的地方欢迎指正!谢谢