Appearance
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")
})