| createReadStream() - 创建可读流
| createWriteStream() - 创建可写流
| setEncodeing() - 设置编码
|

Stream

Stream把较大的数据,拆分成小的部分

读取文件的两种: fs.readFile()和fs.createReadStream()

stream提供了以下四种类型的流:

    var Stream = require('stream');

    var Readable = Stream.Readable;
    var Writable = Stream.Writable;
    var Duplex = Stream.Duplex;
    var Transform = Stream.Transform;

createReadStream()、createWriteStream()

// 创建一个Readable对象以读取bigFile内容
// 如果使用fs.readFile()可以会由于文件过大而失败
fs.createReadStream(bigFile);

setEncodeing() 设置编码

var readerStream = fs.createReadStream('input.txt');

readerStream.setEncodeing('UTF8');

事件

可读数据流的事件

    readable 数据向外流时触发

    data 对于那些没有显式暂停的数据流,添加data事件监听函数,会将数据流切换到流动态,尽快向外提供数据

    end 读取完数据时触发。注意不能和 writeableStream.end() 混淆,writeableStream 并没有 end 事件,只有 .end() 方法

    close 数据源关闭时触发

    error 读取数据发生错误时触发


可写数据流的事件

    drain writable.write(chunk) 返回 false 之后,缓存全部写入完成,可以重新写入时就会触发

    finish 调用 .end 方法时,所有缓存的数据释放后触发,类似于可读数据流中的 end 事件,表示写入过程结束

    pipe 作为 pipe 目标时触发

    unpipe 作为 unpipe 目标时触发

    error 写入数据发生错误时触发

| https://cnodejs.org/topic/570b1fa494b38dcb3c09a7f8
| http://fe.meituan.com/stream-basics.html