сохранить результаты функции в текстовый файл - PullRequest
0 голосов
/ 22 сентября 2019

Я борюсь с этим.Имея файл, который обнаруживает палиндромы, у меня теперь есть функция, с которой я хочу проанализировать текстовый файл, и если предложение в этом текстовом файле является палиндромом, это предложение должно быть записано в новый текстовый файл с именем palindrome.txt

MyКод записывает весь текстовый файл в palindrome.txt, как мне переписать эту функцию?

#!/usr/local/bin/node

let fs = require("fs");
let Phrase = require("mhartl-palindrome");

let text = fs.readFileSync("phrases.txt", "utf-8");
text.split("\n").forEach(function(line) {
  let phrase = new Phrase(line);
  if (phrase.palindrome()) {
    fs.writeFile('palindromes.txt', text, (err) => {
        if (err) throw err;

        console.log('Text saved!');
    });
  }
});

1 Ответ

0 голосов
/ 22 сентября 2019

fs.writeFile переопределит исходный контент.Вам необходимо предоставить Buffer.from (строка) до fs.appendFile .Я использую подход Promise , чтобы достичь желаемого результата.

const fs = require("fs");
const util = require("util");

const Phrase = require("mhartl-palindrome");

const readFile = util.promisify(fs.readFile);
const appendFile = util.promisify(fs.appendFile);

(async () => {
    const text = await readFile("phrases.txt", "utf-8");

    await Promise.all([
        text.split("\n").map(async line => {
            const phrase = new Phrase(line);

            if (phrase.palindrome()) {
                await appendFile("palindromes.txt", Buffer.from(line));
                console.log('Text saved!');
            }

            return Promise.resolve();
        })
    ]);
})();
...