📜  Node.js 文件句柄.appendFile() 方法

📅  最后修改于: 2022-05-13 01:56:19.608000             🧑  作者: Mango

Node.js 文件句柄.appendFile() 方法

filehandle.appendFile()方法在 Node.js 的文件系统模块中定义。文件系统模块基本上是与用户计算机的硬盘进行交互的。 appendFile() 方法用于在现有文件中异步附加新数据,或者如果文件不存在,则首先创建文件,然后将给定的数据附加到文件中。

句法:

filehandle.appendFile(data, options);

参数:此方法接受上面提到的两个参数,如下所述:

  • 数据:它是一个字符串或缓冲区,将附加到目标文件。
  • options:它是一个可选参数,以某种方式影响输出,因此我们是否将其提供给函数调用。
    • encoding:指定编码技术,默认为'UTF8'。

方法: fs.promises.open(path, mode) 方法返回一个用文件句柄对象解析的承诺。首先,我们创建一个文件句柄对象,然后借助它继续使用 appendFile() 方法。

在文件句柄上操作时,模式不能从 fs.promises.open() 设置的模式更改,因此我们确保在调用 fs.promises.open() 时将“a”或“a+”添加到模式中方法,否则 appendFile() 方法仅充当 writeFile() 方法。

示例 1:此示例说明了如何将新数据附加到以前存在的文件中。

// Importing File System and Utilities module
const fs = require('fs')
  
// fs.readFileSync(() method reads the file
// and returns buffer form of the data 
const oldBuffer = fs.readFileSync('./testFile.txt')
  
// File content before append 
const oldContent = oldBuffer.toString()
console.log(`\nBefore Append: ${oldContent}\n`)
  
const appendDataToFile = async (path, data) => {
    let filehandle = null
  
    try {
        // Mode 'a' allows to append new data in file
        filehandle = await fs.promises.open(path, mode = 'a')
  
        // Append operation
        await filehandle.appendFile(data)
    } finally {
        if (filehandle) {
  
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
  
    const newBuffer = fs.readFileSync('./testFile.txt')
  
    // File content after append 
    const newContent = newBuffer.toString()
    console.log(`After Append: ${newContent}`)
}
  
appendDataToFile('./testFile.txt', 
        '\nHey, I am newly added..!!')
    .catch(err => {
        console.log(`Error Occurs, Error code -> 
            ${err.code}, Error NO -> ${err.errno}`)
    })

输出:

示例 2:此示例说明如何在运行时将数据附加到新创建的文件中。

// Importing File System and Utilities module
const fs = require('fs')
  
const appendDataToFile = async (path, data) => {
    let filehandle = null
  
    try {
  
        // Mode 'a' allows to append new data in file
        filehandle = await fs.promises.open(path, mode = 'a')
  
        // Append operation
        await filehandle.appendFile(data)
    } finally {
        if (filehandle) {
  
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
  
    // fs.readFileSync(() method reads the file
    // and returns buffer form of the data 
    const buff = fs.readFileSync('./testFile.txt')
  
    // File content after append 
    const content = buff.toString()
    console.log(`\nContent : ${content}`)
}
  
appendDataToFile('./testFile.txt', 
    '\nPlease add me to the test file..!!')
    .catch(err => {
        console.log(`Error Occurs, Error code -> 
            ${err.code}, Error NO -> ${err.errno}`)
    })

运行程序前的目录结构:

运行程序后的目录结构:

输出: