fs.appendFileSync使用说明,nodejs中appendFile与writeFile追加内容到文件区别

1、appendFile与writeFile区别

  我们在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')
readFile('test2.txt')
复制代码

  运行这段代码,打印信息如下:武汉加油。

  可以看到,当我们循环写入文件内容时,前面写入的内容被覆盖了,因为我们调用的是writeFile或者writeFileSync方法。

  当我们更改为追加appendFile或者appendFileSync时,删除生成的文件,重新运行程序,查看打印信息,打印出了全部内容。

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

  我们为了让内容换行,每行内容增加了os.EOL这个结束字符。这样,在文件中,我们可以看到内容也是换行的。

2、fs.appendFileSync使用说明。

fs.appendFileSync(filename, data, [options])

  该方法功能与 fs.appendFile() 类似,唯一区别就是该方法是用同步操作,而fs.appendFile使用的是异步。

  接收参数:

  1. filename {String}

  2. data {String | Buffer}

  3. options {Object}

        encoding {String | Null} default = ‘utf8′

        mode {Number} default = 438 (aka 0666 in Octal)

        flag {String} default = ‘a'

  源码:

复制代码
fs.appendFileSync = function(path, data, options) {
  if (!options) {
    options = { encoding: 'utf8', mode: 438 /*=0666*/, flag: 'a' };
  } else if (util.isString(options)) {
    options = { encoding: options, mode: 438, flag: 'a' };
  } else if (!util.isObject(options)) {
    throw new TypeError('Bad arguments');
  }
  if (!options.flag)
    options = util._extend({ flag: 'a' }, options);
  fs.writeFileSync(path, data, options);
};
复制代码

  我们通过看源码看到,appendFile其实就是writeFile的扩展

posted @   古兰精  阅读(10455)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示