Skip to content

Escritura de archivos con Node.js

Escritura de un archivo

La forma más sencilla de escribir en archivos en Node.js es usar la API fs.writeFile().

javascript
const fs = require('node:fs')
const content = '¡Algún contenido!'

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err)
  } else {
    // archivo escrito correctamente
  }
})

Escritura de un archivo de forma síncrona

Alternativamente, puedes usar la versión síncrona fs.writeFileSync:

javascript
const fs = require('node:fs')
const content = '¡Algún contenido!'

try {
  fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
  console.error(err)
}

También puedes usar el método fsPromises.writeFile() basado en promesas que ofrece el módulo fs/promises:

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = '¡Algún contenido!'
    await fs.writeFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()

De forma predeterminada, esta API reemplazará el contenido del archivo si ya existe.

Puedes modificar el valor predeterminado especificando una bandera:

javascript
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])

Las banderas que probablemente usarás son:

BanderaDescripciónSe crea el archivo si no existe
r+Esta bandera abre el archivo para lectura y escritura
w+Esta bandera abre el archivo para lectura y escritura y también coloca el flujo al principio del archivo
aEsta bandera abre el archivo para escritura y también coloca el flujo al final del archivo
a+Esta bandera abre el archivo para lectura y escritura y también coloca el flujo al final del archivo

Puedes encontrar más información sobre las banderas en la documentación de fs.

Agregar contenido a un archivo

Agregar contenido a los archivos es útil cuando no deseas sobrescribir un archivo con contenido nuevo, sino agregarlo.

Ejemplos

Un método práctico para añadir contenido al final de un archivo es fs.appendFile() (y su contraparte fs.appendFileSync()):

javascript
const fs = require('node:fs')
const content = '¡Algún contenido!'

fs.appendFile('file_log', content, err => {
  if (err) {
    console.error(err)
  } else {
    // ¡hecho!
  }
})

Ejemplo con Promesas

Aquí hay un ejemplo de fsPromises.appendFile():

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = '¡Algún contenido!'
    await fs.appendFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()