Node.js中你不可不精的Stream(流)(6)
使用fs.createWriteStream()
// 可写流有缓存区的概念 // 1.第一次写入是真的向文件里写,第二次在写入的时候是放到了缓存区里 // 2.写入时会返回一个boolean类型,返回为false时表示缓存区满了,不要再写入了 // 3.当内存和正在写入的内容消耗完后,会触发一个drain事件 //let fs = require('fs'); //let rs = fs.createWriteStream({...});//原生实现可写流 let WS = require('./WriteStream') let ws = new WS('./2.txt', { flags: 'w', // 写入文件,默认文件不存在会创建 highWaterMark: 1, // 设置当前缓存区的大小 encoding: 'utf8', // 文件里存放的都是二进制 start: 0, autoClose: true, // 自动关闭文件描述符 mode: 0o666, // 可读可写 }); // drain的触发时机,只有当highWaterMark填满时,才可能触发drain // 当嘴里的和地下的都吃完了,就会触发drain方法 let i = 9; function write() { let flag = true; while (flag && i >= 0) { i--; flag = ws.write('111'); // 987 // 654 // 321 // 0 console.log(flag) } } write(); ws.on('drain', function () { console.log('dry'); write(); });
总结
stream(流)分为可读流(flowing mode和paused mode)、可写流、可读写流,Node.js 提供了多种流对象。 例如, HTTP 请求 和 process.stdout 就都是流的实例。stream 模块提供了基础的 API 。使用这些 API 可以很容易地来构建实现流接口的对象。它们底层都调用了stream模块并进行封装。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对黑区网络的支持。