Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,如何使用fs.writeFile循环数组,并在新文本文件中垂直打印数组中的每个项目_Javascript_Arrays_Loops_Asynchronous_Text Files - Fatal编程技术网

在javascript中,如何使用fs.writeFile循环数组,并在新文本文件中垂直打印数组中的每个项目

在javascript中,如何使用fs.writeFile循环数组,并在新文本文件中垂直打印数组中的每个项目,javascript,arrays,loops,asynchronous,text-files,Javascript,Arrays,Loops,Asynchronous,Text Files,我试图使用fs.writeFile从字符串数组循环创建新的文本文件。 我使用fs.writeSync,它成功了。 但是,当我使用fs.writeFile时,我创建的文本文件中的内容不会显示数组中的所有项。相反,结果更像是数组中的一些不完整字符串。 我使用setTime()函数将其设置为3秒,但仍然没有在文本文件中显示完整的结果 fs.writeSync one工作得非常好 function fileWriteSync(filePath) { const fd = fs.openSync(

我试图使用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')
函数fileWriteSync(filePath){
const fd=fs.openSync(文件路径'w');
对于(变量i=0;i{
对于(变量i=0;i
我的当前输出:

控制你的压力 情绪
ence并不是一个固定的特性,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);
}
函数fileWrite2(保存路径){
设置超时(()=>{
对于(变量i=0;i
fs.writeSync
给定内容写入文件,从而覆盖文件的现有内容

如果希望附加到文件,则应使用
fs.appendFileSync

在此之前,有一个快速提示:

您应该检查目录/文件是否已经存在,并且 然后创建一个新目录(如果不存在)

您可以使用
fs.ensureDirSync(dir)
fs.mkdirSync(dir)

现在,您可以使用
fs.appendFileSync
附加到文件中

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

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

这里要注意的主要概念是,任何写文件操作都会替换文件和内容,而追加文件操作会将内容追加到文件的末尾。

太奇怪了,我没有每次都有完美的输出。有时,数组中字符串的顺序显示不同。我应该在for循环中设置时间函数吗
fs.appendFileSync(dir, 'your data!', function(err){
    if(err)
      return err;

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