如何在Node.js中使用fs.createReadStream按单词(用空格分隔并返回)(如`/ \ s + / g)读取文件?

无效

我想读取下面的文件,并按空间对其进行解析,然后返回Node.js。

5
12 45 67 34 56

而且我可以做到fs.readFileSync("path","utf8").split(/\s+/g);

但是我该怎么做fs.createReadStream呢?如果我使用流,则单词或数字将如下所示损坏。

123 43 5762748834

chunk1 123 43 57
chunk2 62748834
特里·伦诺克斯

如果需要,您可以为此目的实现Transform流,在此示例中,我们仅对单词进行编号,但是您可以在_transform函数中执行所需的任何操作。一点,您可能必须处理跨单词的碎块,但是这应该很容易做到。

const fs = require("fs");
const stream = require("stream");
const Transform = stream.Transform;

let wordIndex = 0;

class streamSplitter extends Transform {

    _transform(chunk, enc, done) {
        let words = chunk.toString("utf8").split(/\s+/g);
        // Process words here. In this example we'll simply attach a number to each word.
        let processedChunk = words.map(word => `Word #${++wordIndex}: ${word}`).join("\n");
        done(null, processedChunk);
    }
}

fs.createReadStream('inputfile.txt')
    .pipe(new streamSplitter())
    .pipe(fs.createWriteStream('outputfile.txt'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档