我想读取下面的文件,并按空间对其进行解析,然后返回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] 删除。
我来说两句