zoukankan      html  css  js  c++  java
  • 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的扩展

  • 相关阅读:
    PAT 甲级 1115 Counting Nodes in a BST (30 分)
    PAT 甲级 1114 Family Property (25 分)
    PAT 甲级 1114 Family Property (25 分)
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
  • 原文地址:https://www.cnblogs.com/goloving/p/12825651.html
Copyright © 2011-2022 走看看