Как я могу прочитать файлы по слову (разделенные пробелом и возвращением), например `/ \ s + / g`, с fs.createReadStream в Node.js? - PullRequest
1 голос
/ 07 октября 2019

Я хочу прочитать файл ниже, разобрать его по пробелу и вернуться с 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

1 Ответ

2 голосов
/ 07 октября 2019

Вы можете реализовать поток 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'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...