在 javascript 中,如何使用 fs.writeFile 并循环数组并在新文本文件

我正在尝试使用 fs.writeFile 从字符串数组中循环以创建新的文本文件。我使用 fs.writeSync 并且它起作用了。但是,当我使用 fs.writeFile 时,我创建的文本文件中的内容并未显示数组中的每个项目。相反,结果更像是我数组的一些不完整的字符串。我使用 setTime() 函数将其设置为 3 秒,但仍然没有在我的文本文件中显示完整的结果。


fs.writeSync 一个完美的作品


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')

我目前的输出:


管理你的压力和情绪不是一个固定的特征


当年话下
浏览 279回答 2
2回答

动漫人物

writeFile 的工作方式是它不会附加到文件中,而是替换其中的文本。这就是您获得输出的原因。您可以改为使用函数 appendFile。function fileWrite2(savePath) {&nbsp; &nbsp; setTimeout(() => {&nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i < tips.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fs.appendFile(savePath, tips[i] + "\n", function(err) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (err) throw err;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; console.log('File written sucessfully');&nbsp; &nbsp; }, 3000);}

白猪掌柜的

fs.writeSync将给定的内容写入文件,导致覆盖文件的现有内容。如果您希望附加到文件中,您应该fs.appendFileSync为此目的使用。在此之前,有一个快速提示:您应该检查目录/文件是否已经存在,如果不存在则创建一个新目录。你可以用fs.ensureDirSync(dir)和做到这一点fs.mkdirSync(dir)if (!fs.ensureDirSync(dir)) {&nbsp; &nbsp; fs.mkdirSync(dir);}现在,您可以使用fs.appendFileSync附加到您的文件。fs.appendFileSync(dir, 'your data!', function(err){&nbsp; &nbsp; if(err)&nbsp; &nbsp; &nbsp; return err;&nbsp; &nbsp; console.log("file saved successfully");});这里要注意的主要概念是,任何写文件操作都会替换文件和内容,而附加文件操作会将内容附加到文件末尾。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript