В javascript, как я могу использовать fs.writeFile и зациклить массив и полностью распечатать каждый элемент из массива по вертикали в новом текстовом файле - PullRequest
1 голос
/ 19 октября 2019

Я пытаюсь использовать fs.writeFile для цикла из массива строк, чтобы создать новый текстовый файл. Я использую fs.writeSync, и это сработало. Однако, когда я использую fs.writeFile, содержимое созданного мною текстового файла не отображает каждый элемент в моем массиве. Вместо этого результат больше похож на некоторые неполные строки моего массива. Я использую функцию setTime (), чтобы установить ее на 3 секунды, и все еще не показывает полные результаты в моем текстовом файле.

fs.writeSync one отлично работает

function fileWriteSync(filePath) {
    const fd = fs.openSync(filePath, 'w');
    for (var i = 0; i < tips.length; i++) {
        fs.writeSync(fd, tips[i] + '\n');
        console.log(tips[i]);
    }

    fs.closeSync(fd);
  }

tips = [
"Work in teams",
"get enough sleep",
"be on time",
"Rely on systems",
"Create a rough weekly schedule",
"Get rid of distractions before they become distractions",
"Develop good posture",
"Don’t multitask",
"Cultivate the belief that intelligence isn’t a fixed trait",
"Work in short blocks of time", "Exercise regularly",
"Be organized", "Break big tasks into smaller ones",
"Take notes during class", "Ask lots of questions",
"Eat healthily",
"Do consistent work",
"Manage your thoughts and emotions",
"Give yourself rewards",
"Manage your stress"
]


function fileWrite2(savePath) {
    setTimeout(() => {
        for (var i = 0; i < tips.length; i++) {
            fs.writeFile(savePath, tips[i] + "\n", function(err) {
                if (err) throw err;
            });
        }
        console.log('File written sucessfully');
    }, 3000);
}
fileWrite2('tips3.txt')

Мой текущий вывод:

Управляйте своими стрессами и эмоциями, а не фиксированной чертой

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Метод writeFile работает так, что он не добавляет файл, а заменяет текст в нем. Это и есть причина получения результата.

Вместо этого вы можете использовать функцию appendFile.

function fileWrite2(savePath) {
    setTimeout(() => {
        for (var i = 0; i < tips.length; i++) {
            fs.appendFile(savePath, tips[i] + "\n", function(err) {
                if (err) throw err;
            });
        }
        console.log('File written sucessfully');
    }, 3000);
}
0 голосов
/ 19 октября 2019

fs.writeSync запишет заданное содержимое в файл, что приведет к перезаписи существующего содержимого файла.

Если вы хотите добавить файл, вы должны использовать fs.appendFileSync для этой цели.

Перед этим, быстрый совет :

Вы должны проверить, существует ли каталог / файл, или нет, а затем создатьновый каталог, если его нет.

Вы можете сделать это с помощью fs.ensureDirSync(dir) и fs.mkdirSync(dir)

if (!fs.ensureDirSync(dir)) {
    fs.mkdirSync(dir);
}

Теперь вы можете использовать fs.appendFileSync для добавления к вашемуfile.

fs.appendFileSync(dir, 'your data!', function(err){
    if(err)
      return err;

    console.log("file saved successfully");
});

Основная концепция, которую следует здесь отметить, заключается в том, что любая операция записи файла заменит файл и содержимое, тогда как операция добавления файла добавит содержимое в конец файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...