zhuheyang
10/2/2017 - 1:33 PM

Node Stream:一次只读取一块内容,以行尾结束符(\n)切分

Node Stream:一次只读取一块内容,以行尾结束符(\n)切分

var fs = require('fs');
fs.readFile('myfile.txt', function (err, contents) {
  //handle the files
}
//fs模块允许使用StreamAPI来对数据进行读写操作,它对内存的分配不是一次完成的
//上述回调函数,必须等整个文件加载完毕,载入到RAM中,且可用的情况下才会出发
//而利用fs.createReadStream方法则允许为一个文件创建一个可读的Stream对象

var stream = fs.createReadStream('myfile.txt');
stream.on('data', function(chunk) {
  //handle the file's content
});

stream.on('end', function(chunk) {
  //ending the file's reading 
})

//以上每次都会读取可变大小的内容块, 且每次读取后都会触发回调函数

/*为什么这种能力很重要?
例子1:将一个很大的视频文件上传到某个Web服务
无需读取完整的文件后再开始上传
例子2:应用记录网站访问情况,要将记录写到文件中
打开文件操作只做一次,写入每个日志项时调用write方法*/