nodejs中追加内容到文件

作者:jcmp      发布时间:2021-04-27      浏览量:0
最近在使用nodejs写日志记录的时候,

最近在使用nodejs写日志记录的时候,发现一个问题:使用fs模块读写文件,调用writeFile(path,data)或者writeFileSync(path,data)时会将日志文件原来的内容给覆盖掉,显然这不是我所想要的结果,我想要的效果是在文件末尾追加,所以需要使用appendFile(path,data)或者appendFileSync(path,data)方法。以下内容转载自 nodejs中追加内容到文件。

我们看如下示例:

var fs = require("fs")var os = require("os");var path = require("path"); function readFile(filePath){ fs.readFile(filePath,'utf-8',(err,data)=>{ if(err){ console.log(err); return; } console.log(data); })}var contents = ['hello nodejs.','今天是2020年2月27日。','中国面临新型冠状病毒肺炎疫情的困扰。','武汉加油。'];function writeFile(filePath){ for(var i=0;i

运行这段代码,打印信息如下:

可以看到,当我们循环写入文件内容时,前面写入的内容被覆盖了,因为我们调用的是writeFile或者writeFileSync方法。当我们更改为追加appendFile或者appendFileSync时,删除生成的文件,重新运行程序,查看打印信息:

通过示例,我们也可以看出writeFile和appendFile的区别了,一个是相当于替换,一个是文件末尾追加,另外,不管是writeFile还是appendFile,当文件不存在时,会自动创建,而不是报错。

我们为了让内容换行,每行内容增加了os.EOL这个结束字符。

这样,在文件中,我们可以看到内容也是换行的。

另外,我这里有中文,但是没有额外指定编码方式,没有出现中文乱码问题,我这里的js文件是通过VSCode编写,编码采用的是UTF-8。

一、参考资料