从输入流读取一部分数据,然后将这一部分读取到的数据写入到输出流中,这样能够避免fs.readFile()和fs.writeFile()将Buffer全部写到内存中的问题。
文件的读取速度一般要比写入速度快,如果writeStream.write(chunk)返回false,表示流还在输出流的缓存中,还没有写入到文件中,可以调用readSteam.pasuse()方法将暂停读取,等writeSteam将缓存区中的数据都写入到文件中时,会触发drain事件,这时候再调用readStream.resume()方法继续读取数据。
varfs = require('fs');
var readStream = fs.createReadStream(' buffer_image.js ');
var writeStream = fs.createWriteStream(' big.js ');
readStream.on ( 'data' , function( chunk ) {
if( writeStream.write ( chunk ) ==false){
console.log(' is pause ')
writeStream.pause();
}
});
readStream.on('end',function(){
writeStream.end()
});
writeStream.on('drain',function(){
console.log('is resume')
readStream.resume()
})