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

本文介绍如何在NodeJS中实现一个简单的可写流。关键在于维护一个缓冲区存储未写入的数据,以及一个标志位记录当前是否正在写入。通过write方法接收数据,当非写入状态时,切换到写入并调用fs.write写入文件。同时,检查缓冲区内容,若超过highWaterMark限制,则停止读取。通过实际操作验证,实现了预期功能。
摘要由CSDN通过智能技术生成

实现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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值