Sistema de archivos en Nodejs
Artículo básico sobre manejo de archivos en Nodejs. Módulo de sistema de archivos con operaciones de lectura, escritura y eliminación.
Concepto de sistema de archivos
Un sistema de archivos es la estructura del sistema operativo para organizar, controlar y almacenar datos. Los sistemas de archivos, además del control, agregan algunas funciones adicionales, como capas de acceso, atributos y convenciones.
Los sistemas de archivos en particular actúan en el sistema operativo como una interfaz para todos los demás dispositivos conectados a la computadora (memorias USB, unidades externas, etc.). Actualmente, existen diferentes tipos de sistemas de archivos según el sistema operativo host, como Windows, macOS o Linux. Estos sistemas tienen algunas similitudes, aunque en principio son incompatibles entre sí.
Los sistemas de archivos más comunes hasta la fecha son:
- Windows / FAT16, FAT32, exFAT y NTFS.
- MacOs / HFS+ y APFS.
- Linux / Ext4.
🧐 | NOTA: Para verificar el sistema de archivos de su computadora, consulte la documentación del SO respectivo. Ejemplo de Windows.
Concepto de archivo
Como se mencionó anteriormente, un archivo es básicamente una secuencia de bytes que se almacenan en el dispositivo. Se denominan archivos porque son equivalentes a archivos físicos como papeles, cuadernos, etc.
La particularidad de los archivos es que tienen un nombre y una extensión asociada comúnmente compuesta por 3 o 4 letras. La extensión describe el contenido del archivo, ayudando a los programas a poder manipular y mostrar el contenido al usuario según sea el caso (JPG, PNG, TXT, etc).
🧐 | NOTA: Para obtener información sobre un determinado archivo, verifique sus propiedades. Ejemplo de Windows.
Sistema de archivos del módulo
Nodejs en particular contiene un módulo central, especialmente para la manipulación de archivos llamado Filesystem. Este módulo nos ayuda con el soporte de archivos sin importar el sistema operativo. El módulo funciona sobre la base de devoluciones de llamadas, transmisiones y eventos como la mayoría de los módulos en Nodejs.
Aquí hay un ejemplo de un programa Nodejs que lee el contenido de un archivo de texto ubicado en el directorio actual.
const fs = require('fs');fs.readFile('./hello.txt', { encoding: 'utf8'}, (err, data)=> { if (err) throw err; console.log(data); });
Esto imprime el siguiente resultado en la consola:
hello world
🧐 | NOTA: El resultado anterior, en concreto, es un búfer, cuando leemos debemos indicar la codificación para interpretar el contenido.
Métodos básicos de manejo de archivos
El módulo Sistema de archivos contiene los siguientes métodos básicos principales que nos ayudan a manipular archivos:
- Lectura de archivos: readFile y readFileSync.
- Escritura de archivos: writeFile y writeFileSync.
- Eliminación de archivos: unlink y unlinkSync.
Dependiendo de las necesidades, Nodejs nos proporciona estos métodos en modo asíncrono por defecto y opcionalmente síncrono (Sync).
Lectura de archivos
Aquí hay un ejemplo de un programa de Nodejs que lee el contenido de un archivo de texto de forma asincrónica y sincrónica.
readFile
fs.readFile('./words.txt', { encoding: "utf-8" }, (err, data) => { if (err) throw err; console.log(data); });
readFileSync
const fs = require('fs');try { const data = fs.readFileSync('./words.txt', { encoding: "utf-8" }); console.log(data); } catch (err) { throw err; }
Estas dos formas imprimen el mismo resultado en la consola:
word1 word2
Escribir archivos
Aquí hay un ejemplo de un programa de Nodejs que crea un nuevo archivo y escribe el contenido de forma asincrónica y sincrónica.
writeFile
const fs = require('fs');const text = "Hello world";fs.writeFile('./file.txt', text, (err) => { if (err) throw err; });
writeFileSync
const fs = require('fs');const text = "Hello world";try { fs.writeFileSync('./file.txt', text); } catch (err) { throw err; }
Estas dos formas crean el archivo llamado file.txt en el directorio actual con el contenido de:
Hello world
Eliminación de archivos
Aquí hay un ejemplo de un programa de Nodejs que elimina un archivo en el directorio actual de forma asincrónica y sincrónica.
unlink
const fs = require('fs');fs.unlink('./file.txt', (err) => { if (err) throw err; });
unlinkSync
const fs = require('fs');try { fs.unlinkSync('./file.txt'); } catch (err) { throw err; }
Ambas formas eliminan el archivo file.txt en el directorio actual.
Recursos Sistema de archivos Nodejs
- API del sistema de archivos: documentación, conceptos y ejemplos.
Gracias por llegar hasta aquí, si encuentra esto útil no olvide aplaudir “👍🏼” y suscribirse para recibir más contenido.
Si necesita ayuda adicional, por favor contácteme.
Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:
- Cree una aplicación de Full Stack en AWS: 100% sin servidor
- Cómo proteger su aplicación Laravel: los mejores consejos para la seguridad de Laravel