前言
可读流中有 on(‘data’) on(‘end’)
可写流有 write end
fs.createWriteStream
概念
这里先创建一个文件 notd.md
1 | 你好 |
1 | // 可读流 |
1 | const fs = require('fs'); |
具体要看flag可以看下面的 只看可写流
示例
1. 预计写10个数 同步的写
1 | let fs = require('fs'); |
可写流写入的数据只能是字符串或者Buffer 所以这里+’’
原理如图:
第一次0往里写还能写下,第二次1往里写还能写下,第三次2往里写,2能写下,但是之后的不能写下了,所以如图flag为false,即flag表示是否还能继续往里写,值为false时表示预计的缓存区放不下, 但是还是会放进去,会撑开,这样就浪费内存了,希望的是写不下了,就等待,等写完了再放进去。
2. 加flag的判断
1 | let fs = require('fs'); |
3. 当内存中的值都写入文件之后继续写入
on(‘drain’)
1 | // 当内存中的值都写入文件之后继续写入 |
4. 只有手动调end 才会触发关闭文件的事件
1 | let fs = require('fs'); |
手写可写流
新建:调用文件 write.js 原理 ReadStream.js
1 | // write.js |
1 | // WriteStream.js |