NodeJS中的流无法触发end事件
发布于 8 年前 作者 anymost 3880 次浏览 来自 问答

我在使用scissors这个包时,读入一个PDF的stream,然后将这个stream生成TXT stream,发现这个stream是老式的stream,然后使用 var Readable=require(‘stream’).Readable(); var srcStream=new Readable().wrap(stream);将这个stream包装成readable后还是在读取内容完毕后不会触发end事件,不知道为什么,求大神支招,非常感激! 大致的代码如下: QQ截图20160528150527.jpgQQ截图20160528150440.jpg

4 回复

刚测试了一下,表示会触发end事件,代码如下:

'use strict';
const Readable = require('stream').Readable;
const fs = require('fs');

let srcStream = new Readable().wrap(fs.createReadStream('test.html'));
let chunks = [];
srcStream.on('data', data => chunks.push(data));
srcStream.on('end', _ => console.log(Buffer.concat(chunks).toString('utf8')));

您好!很感谢您能帮我解答问题。但是还是没能解决问题,因为我要读取一个pdf文件,pdf是二进制的,所以要经过转换才能变成文本文件,所以使用了scissors这个包来包装pdf的流,生成一个文本文件的流,这个流是老式流,所以用readable.wrap()包装后形成readable的流,但还是不能触发end事件,不知道为什么

用 pipe 呢?

是不是 srcPath 还没写完… 这样试试

file.on('finish', function(){
  saveFile // blabla
})
回到顶部