创建自己的可读写流

我们将看到由 fs 等模块返回的流对象,但是如果我们想要创建自己的可流传输对象呢?

要创建 Stream 对象,我们需要使用 NodeJs 提供的流模块

    var fs = require("fs");
    var stream = require("stream").Writable;
    
    /* 
     *  Implementing the write function in writable stream class.
     *  This is the function which will be used when other stream is piped into this 
     *  writable stream.
     */
    stream.prototype._write = function(chunk, data){
        console.log(data);
    }
    
    var customStream = new stream();
    
    fs.createReadStream("am1.js").pipe(customStream);

这将为我们提供自己的自定义可写流。我们可以在 _write 函数中实现任何东西。上面的方法适用于 NodeJs 4.xx 版本但在 NodeJs 6.x ES6 中引入了类,因此语法已经改变。下面是 6.J 版 NodeJ 的代码

    const Writable = require('stream').Writable;
    
    class MyWritable extends Writable {
      constructor(options) {
        super(options);
      }
    
      _write(chunk, encoding, callback) {
        console.log(chunk);
      }
    }