El método fs.appendFile() se define en el módulo Sistema de archivos de Node.js. El módulo del Sistema de Archivos es básicamente 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 proporcionados.
El método fs.appendFile() se basa en la devolución de llamada. El uso de métodos de devolución de llamada genera una gran posibilidad de anidamiento de devolución de llamada o problemas infernales de devolución de llamada. Por lo tanto, para evitarlo, casi nos gusta trabajar con un método basado en promesas. Usando algún método adicional de node.js, podemos operar un método basado en devolución de llamada de manera prometedora.
Sintaxis:
fs.appendFile(path, data, options)
Parámetro:
- 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, 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’.
Enfoque: el método fs.appendFile() basado en la devolución de llamada. Para operarlo con promesas, primero, usamos el método promisify() definido en el módulo de utilidades para convertirlo en un método basado en promesas.
Ejemplo 1:
// Importing File System and Utilities module const fs = require('fs') const util = require('util') // Convert callback based methods to // promise based methods const appendContent = util.promisify(fs.appendFile) const readFileContent = util.promisify(fs.readFile) // The readFileContent() method reads the // file and returns buffer form of the data readFileContent('./testFile.txt') .then(buff => { // File content before append const oldContent = buff.toString() console.log(`\nBefore Append: ${oldContent}\n`) // Append operation return appendContent('./testFile.txt', '\nHey, I am newly added..!!') }) .then(() => { // Getting new file content return readFileContent('./testFile.txt') }) .then(buff => { // File content after append const newContent = buff.toString() console.log(`After Append: ${newContent}\n`) }) .catch(err => { console.log(`Error Occurs, Error code -> ${err.code}, Error NO -> ${err.errno}`) })
Implementando la misma funcionalidad usando async-await.
// Importing File System and Utilities module const fs = require('fs') const util = require('util') // Convert callback based methods to // promise based methods const appendContent = util.promisify(fs.appendFile) const readFileContent = util.promisify(fs.readFile) const appendDataToFile = async (path, data) => { // The readFileContent() method reads the file // and returns buffer form of the data const oldBuffer = await readFileContent(path) // File content before append const oldContent = oldBuffer.toString() // Append operation await appendContent(path, data) const newBuffer = await readFileContent(path) // File content after append const newContent = newBuffer.toString() console.log(`\nBefore Append: ${oldContent}\n`) 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}`) }) })
Producción:
Ejemplo 2: cuando no existe una ruta dada al nombre del archivo.
// Importing File System and Utilities module const fs = require('fs') const util = require('util') // Convert callback based methods to // promise based methods const appendContent = util.promisify(fs.appendFile) const readFileContent = util.promisify(fs.readFile) // Append operation if given file does not exist // it will be created first then data is appended appendContent('./testFile.txt', 'Please add me to the test file..!!') .then(() => { // readFileContent() method reads the file // and returns buffer form of the data return readFileContent('./testFile.txt') }) .then(buff => { // Appended data const content = buff.toString() console.log(`\nContent : ${content}`) }) .catch(err => { console.log(`Error Occurs, Error code -> ${err.code}, Error NO -> ${err.errno}`) })
Implementando la misma funcionalidad que async-await.
// Importing File System and Utilities module const fs = require('fs') const util = require('util') // Convert callback based methods to // promise based methods const appendContent = util.promisify(fs.appendFile) const readFileContent = util.promisify(fs.readFile) const appendDataToFile = async (path, data) => { // Append operation if given file does not exist // it will created first then data is appended await appendContent(path, data) // readFile() method reads the file // and returns buffer form of the data const buff = await readFileContent(path) // File content after append const content = buff.toString() console.log(`\nContent : ${content}`) } appendDataToFile('./testFile.txt', 'Please add me to the test file..!!') .catch(err => { console.log(`Error Occurs, Error code -> ${err.code}, Error NO -> ${err.errno}`) })
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