建立自己的可讀寫流

我們將看到由 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);
      }
    }