nodejs中追加内容到文件

    我们在nodejs开发中,有时候会遇到文件读写问题,在写文件的时候,我们会有这样的场景,需要向文件中循环添加内容,这时候,如果调用writeFile(path,data)或者writeFileSync(path,data),只会将最后一次写入的内容加入到文件中,而不是追加内容到文件,如果想要将内容追加到文件中,我们需要使用appendFile(path,data)或者appendFileSync(path,data)方法。

    我们看如下示例:

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<contents.length;i++){
		fs.writeFileSync(filePath,contents[i]+os.EOL);
		//fs.appendFileSync(filePath,contents[i]+os.EOL);
	}
}

writeFile("test2.txt");
/*
console.log(path.resolve('.'+path.sep));
console.log(__dirname)
console.log(process.cwd())
*/
readFile("test2.txt");

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

     

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

     

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

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

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

    

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

扫描二维码关注公众号,回复: 10819382 查看本文章

     

发布了529 篇原创文章 · 获赞 287 · 访问量 147万+

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/104547589
今日推荐