Método Node.js fs.promises.appendFile()

El método fs.promises.appendFile() del módulo Sistema de archivos en Node.js se usa para interactuar con el disco duro de la computadora del usuario. El método appendFile() se usa para agregar nuevos datos en el archivo existente o, si el archivo no existe, primero se crea el archivo y luego se le agregan los datos dados. El método fs.promises.appendFile() devuelve una promesa resuelta o rechazada y, por lo tanto, evita el anidamiento de devolución de llamada o los problemas infernales de devolución de llamada que pueden ocurrir en el método fs.appendFile() .

Sintaxis:

fs.promises.appendFile( path, data, options )

Parámetro: este método acepta tres rutas de parámetros, datos y opciones. Opciones es un parámetro opcional.

  • ruta: es una string, búfer o URL que especifica la ruta al archivo de destino en el que se agregarán los datos dados.
  • datos: es una string o un búfer que se agregará al archivo de destino.
  • opciones: es un parámetro opcional que afecta la salida de alguna manera según lo proporcionemos a la llamada de función o no.
    • codificación: Especifica la técnica de codificación, el valor por defecto es ‘UTF8’.
    • mode: Especifica el modo del archivo. Los modos de archivo nos permiten crear, leer, escribir o modificar un archivo. El valor predeterminado es ‘0o666’.
    • bandera: especifica la bandera utilizada al agregar al archivo. El valor predeterminado es ‘a’.

Valor devuelto: Devuelve una promesa resuelta o rechazada. La promesa se resuelve si los datos se agregan con éxito al archivo de destino; de lo contrario, se rechazan con un objeto de error si se produce algún error (el archivo especificado en el ejemplo no tiene permiso de escritura, etc.)

Ejemplo 1:

// Importing File System module
const fs = require('fs')
  
// The readFile() method reads the file
// and returns buffer form of the data 
fs.promises.readFile('./test.txt')
    .then(buff => {
  
        // File content before append 
        const oldContent = buff.toString()
        console.log(`Before Append: ${oldContent}\n`)
  
        // Append operation
        return fs.promises.appendFile('./test.txt', 
                    '\nHey, I am newly added..!!')
    })
  
    .then(() => {
  
        // Getting new file content
        return fs.promises.readFile('./test.txt')
    })
  
    .then(buff => {
  
        // File content after append 
        const newContent = buff.toString()
        console.log(`After Append: ${newContent}\n`)
    })
  
    .catch(err => {
        console.log(err)
    })

podemos implementar la misma funcionalidad usando palabras clave async-await.

// Importing File System module
const fs = require('fs')
const appendDataToFile = async (path, data) => {
  
    // The readFile() method reads the file
    // and returns buffer form of the data 
    const oldBuffer = await fs.promises.readFile(path)
  
    // File content before append 
    const oldContent = oldBuffer.toString()
  
    // Append operation
    await fs.promises.appendFile(path, data)
  
    const newBuffer = await fs.promises.readFile(path)
  
    // File content after append 
    const newContent = newBuffer.toString()
  
    console.log(`Before Append: ${oldContent}\n`)
    console.log(`After Append: ${newContent}`)
}
  
appendDataToFile('./test.txt', 
        '\nHey, I am newly added..!!')
    .catch(err => {
        console.log(err)
    })

Producción:

Ejemplo 2: cuando no existe una ruta dada al nombre del archivo.

// Importing File System module
const fs = require('fs')
  
// Append operation
// If given file does not exist
// it will be created first then
// data is appended
fs.promises.appendFile('./test.txt', 
    'Please add me to the test file..!!')
    .then(() => {
  
        // readFile() method reads the file
        // and returns buffer form of the data 
        return fs.promises.readFile('./test.txt')
    })
  
    .then(buff => {
  
        // Appended data
        const content = buff.toString()
        console.log(`Content : ${content}`)
    })
  
    .catch(err => {
        console.log(err)
    })

Implementando la misma funcionalidad con palabras clave async-await.

// Importing File System module
const fs = require('fs')
  
const appendDataToFile = async (path, data) => {
  
    // Append operation
    // If given file does not exist
    // It will created first then
    // data is appended
    await fs.promises.appendFile(path, data)
  
    // readFile() method reads the file
    // and returns buffer form of the data 
    const buff = await fs.promises.readFile(path)
  
    // File content after append 
    const content = buff.toString()
    console.log(`Content : ${content}`)
}
  
appendDataToFile('./test.txt', 
    'Please add me to the test file..!!')
    .catch(err => {
        console.log(err)
    })

Estructura del directorio antes de ejecutar el programa:

Estructura del directorio después de ejecutar el programa:

Producción:

Publicación traducida automáticamente

Artículo escrito por hunter__js y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *