如何在使用stream2接口后将node.js缓冲区转换为可读流?
我已经找到了这个answer和stream-buffers模块,但是这个模块基于stream1接口。
答案 0 :(得分:150)
最简单的方法可能是创建一个新的PassThrough流实例,然后简单地将数据推入其中。当您将其传输到其他流时,数据将从第一个流中拉出。
var stream = require('stream');
// Initiate the source
var bufferStream = new stream.PassThrough();
// Write your buffer
bufferStream.end(new Buffer('Test data.'));
// Pipe it to something else (i.e. stdout)
bufferStream.pipe(process.stdout)
答案 1 :(得分:32)
正如natevw所建议的那样,使用stream.PassThrough
和end
与缓冲区一起使用更为惯用:
var buffer = new Buffer( 'foo' );
var bufferStream = new stream.PassThrough();
bufferStream.end( buffer );
bufferStream.pipe( process.stdout );
这也是vinyl-fs中缓冲区转换/传输的方式。
答案 2 :(得分:14)
使用streamifier,您可以使用新流api将字符串和缓冲区转换为可读流。
答案 3 :(得分:1)
一种现代简单的方法,可以在任何使用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);