Skip to content

fs

filesystem es un módulo nativo de Node.js que nos permite trabajar con el sistema de archivos, podremos crear, leer, actualizar y eliminar archivos y carpetas.

La API incluye tanto métodos síncronos como asíncronos, pero se recomienda usar los métodos asíncronos ya que los métodos síncronos bloquean el hilo principal de Node.js, y esto puede afectar el rendimiento de nuestra aplicación.

Usar el módulo

Para usar el módulo filesystem, debemos importarlo usando la palabra reservada require.

javascript
const fs = require("fs")
const fs = require("fs")

Leer directorios

Podemos ver el contenido de una carpeta con los métodos readdir y readdirSync.

javascript
const dir = fs.readdirSync("./carpeta")
console.log(dir)
const dir = fs.readdirSync("./carpeta")
console.log(dir)
javascript
fs.readdir("./carpeta", (err, dir) => {
  if (err) {
    console.log(err)
    return
  }

  console.log(dir)
})
fs.readdir("./carpeta", (err, dir) => {
  if (err) {
    console.log(err)
    return
  }

  console.log(dir)
})

Crear directorios

Podemos crear una carpeta con los métodos mkdir y mkdirSync.

javascript
fs.mkdirSync("./carpeta")
fs.mkdirSync("./carpeta")
javascript
fs.mkdir("./carpeta", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Carpeta creada")
})
fs.mkdir("./carpeta", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Carpeta creada")
})

Eliminar directorios

Podemos eliminar una carpeta con los métodos rmdir y rmdirSync.

javascript
fs.rmdirSync("./carpeta")
fs.rmdirSync("./carpeta")
javascript
fs.rmdir("./carpeta", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Carpeta eliminada")
})
fs.rmdir("./carpeta", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Carpeta eliminada")
})

Leer archivos

Podemos leer un archivo con los métodos readFile y readFileSync.

javascript
const contenido = fs.readFileSync("./archivo.txt", "utf-8")
console.log(contenido)
const contenido = fs.readFileSync("./archivo.txt", "utf-8")
console.log(contenido)
javascript
fs.readFile("./archivo.txt", "utf-8", (err, contenido) => {
  if (err) {
    console.log(err)
    return
  }

  console.log(contenido)
})
fs.readFile("./archivo.txt", "utf-8", (err, contenido) => {
  if (err) {
    console.log(err)
    return
  }

  console.log(contenido)
})

Podemos ir leyendo el archivo de a pedazos con el método createReadStream.

javascript
const stream = fs.createReadStream("./archivo.txt", "utf-8")

stream.on("data", (chunk) => {
  console.log(chunk)
})

stream.on("end", () => {
  console.log("Fin del archivo")
})
const stream = fs.createReadStream("./archivo.txt", "utf-8")

stream.on("data", (chunk) => {
  console.log(chunk)
})

stream.on("end", () => {
  console.log("Fin del archivo")
})

Esto es util si el archivo es muy grande y no queremos cargarlo todo en memoria.

Crear archivos

Podemos crear un archivo con los métodos writeFile y writeFileSync.

javascript
fs.writeFileSync("./archivo.txt", "Hola mundo")
fs.writeFileSync("./archivo.txt", "Hola mundo")
javascript
fs.writeFile("./archivo.txt", "Hola mundo", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo creado")
})
fs.writeFile("./archivo.txt", "Hola mundo", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo creado")
})

Podemos ir escribiendo el archivo de a pedazos con el método createWriteStream.

javascript
const stream = fs.createWriteStream("./archivo.txt", "utf-8")

stream.write("Hola")

stream.end(" mundo")
const stream = fs.createWriteStream("./archivo.txt", "utf-8")

stream.write("Hola")

stream.end(" mundo")

En este caso usaremos el método write para escribir el contenido del archivo, y el método end para indicar que terminamos de escribir.

Actualizar archivos

Podemos actualizar un archivo con los métodos appendFile y appendFileSync.

javascript
fs.appendFileSync("./archivo.txt", "Contenido extra")
fs.appendFileSync("./archivo.txt", "Contenido extra")
javascript
fs.appendFile("./archivo.txt", "Contenido extra", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo actualizado")
})
fs.appendFile("./archivo.txt", "Contenido extra", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo actualizado")
})

Ambos métodos agregan el contenido al final del archivo.

Eliminar archivos

Podemos eliminar un archivo con los métodos unlink y unlinkSync.

javascript
fs.unlinkSync("./archivo.txt")
fs.unlinkSync("./archivo.txt")
javascript
fs.unlink("./archivo.txt", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo eliminado")
})
fs.unlink("./archivo.txt", (err) => {
  if (err) {
    console.log(err)
    return
  }

  console.log("Archivo eliminado")
})