如何使用 stream2 接口将 node.js 缓冲区转换为可读流?
我已经找到了这个答案和 stream-buffers 模块,但是这个模块是基于 stream1 接口的。
如何使用 stream2 接口将 node.js 缓冲区转换为可读流?
我已经找到了这个答案和 stream-buffers 模块,但是这个模块是基于 stream1 接口的。
最简单的方法可能是创建一个新的 PassThrough 流实例,然后简单地将数据推送到其中。当您将其通过管道传输到其他流时,数据将从第一个流中提取出来。
var stream = require('stream');
// Initiate the source
var bufferStream = new stream.PassThrough();
// Write your buffer
bufferStream.end(Buffer.from('Test data.'));
// Pipe it to something else (i.e. stdout)
bufferStream.pipe(process.stdout)
stream.PassThrough
正如 natevw 所建议的,使用 a和end
它与缓冲区一起使用更为惯用:
var buffer = new Buffer( 'foo' );
var bufferStream = new stream.PassThrough();
bufferStream.end( buffer );
bufferStream.pipe( process.stdout );
这也是在vinyl-fs中转换/传输缓冲区的方式。
一种现代的简单方法,可在您使用 fs.createReadStream() 的任何地方使用,但无需先将文件写入路径。
const {Duplex} = require('stream'); // Native Node Module
function bufferToStream(myBuuffer) {
let tmp = new Duplex();
tmp.push(myBuuffer);
tmp.push(null);
return tmp;
}
const myReadableStream = bufferToStream(your_buffer);