NodeJS -- 简单实现一个可写流

实现node.js里面的可写流主要在于俩个点

1:有一个缓冲区,用于对没有来得及写入的数据进行缓存

2:有一个字段用来标记当前是否为写入状态。

在代码体现为, this.buffer一个数组用来保存缓冲区里面的值,this.writing表示当前是否为写入状态true表示正在写入

思路,我们调用write方法,读入数据时对当前状态进行判断,如果writing为false,那么置为true 调用fs.write方法去写入文件里面

在此期间,读入的其他字符会保存在缓冲区里面。每一写完一次数据,我们就会去检测缓冲区里面是否存在值,如果有,那么就去写入。此外,当缓冲区里的大小大于this.highWaterMark时,那么就需要return false, 不要在读了。

来实现看看把



const fs = require("fs");
const EventEmitter = require("events");

class WriteStream extends EventEmitter {
    constructor (path, options) {
        super(path, options);
        this.path = path;
        this.flags = options.flags || "w";
        this.mode = options.mode || 0o666;
        this.highWaterMark = options.highWaterMark || 16 * 2024;
        this.encoding = options.encoding || "utf8"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值