En aquest tema, aprendrem com llegir i escriure fitxers utilitzant Node.js. Aquestes operacions són fonamentals per a moltes aplicacions, ja que permeten la manipulació de dades emmagatzemades en el sistema de fitxers.
Objectius
- Entendre com utilitzar el mòdul
fs
per a operacions de lectura i escriptura de fitxers. - Aprendre a gestionar errors durant aquestes operacions.
- Realitzar operacions de lectura i escriptura de manera síncrona i asíncrona.
Mòdul fs
Node.js proporciona el mòdul fs
(file system) per treballar amb el sistema de fitxers. Aquest mòdul inclou mètodes per llegir, escriure, actualitzar i eliminar fitxers.
Importar el mòdul fs
Llegir Fitxers
Lectura Asíncrona
La lectura asíncrona és preferible en la majoria dels casos perquè no bloqueja el fil principal de l'aplicació.
fs.readFile('path/al/fitxer.txt', 'utf8', (err, data) => { if (err) { console.error('Error llegint el fitxer:', err); return; } console.log('Contingut del fitxer:', data); });
Explicació del Codi
fs.readFile
: Mètode per llegir fitxers de manera asíncrona.'path/al/fitxer.txt'
: Ruta del fitxer a llegir.'utf8'
: Codificació del fitxer.callback
: Funció que s'executa després de la lectura del fitxer. Rep dos paràmetres:err
(error) idata
(contingut del fitxer).
Lectura Síncrona
La lectura síncrona bloqueja el fil principal fins que l'operació es completa. És útil en scripts petits o quan la lectura ha de ser immediata.
try { const data = fs.readFileSync('path/al/fitxer.txt', 'utf8'); console.log('Contingut del fitxer:', data); } catch (err) { console.error('Error llegint el fitxer:', err); }
Explicació del Codi
fs.readFileSync
: Mètode per llegir fitxers de manera síncrona.try...catch
: Bloc per gestionar errors durant la lectura.
Escriure Fitxers
Escriptura Asíncrona
const contingut = 'Aquest és el contingut a escriure en el fitxer.'; fs.writeFile('path/al/fitxer.txt', contingut, 'utf8', (err) => { if (err) { console.error('Error escrivint el fitxer:', err); return; } console.log('Fitxer escrit correctament.'); });
Explicació del Codi
fs.writeFile
: Mètode per escriure fitxers de manera asíncrona.'path/al/fitxer.txt'
: Ruta del fitxer a escriure.contingut
: Contingut a escriure en el fitxer.'utf8'
: Codificació del fitxer.callback
: Funció que s'executa després de l'escriptura del fitxer. Rep un paràmetreerr
(error).
Escriptura Síncrona
const contingut = 'Aquest és el contingut a escriure en el fitxer.'; try { fs.writeFileSync('path/al/fitxer.txt', contingut, 'utf8'); console.log('Fitxer escrit correctament.'); } catch (err) { console.error('Error escrivint el fitxer:', err); }
Explicació del Codi
fs.writeFileSync
: Mètode per escriure fitxers de manera síncrona.try...catch
: Bloc per gestionar errors durant l'escriptura.
Exercicis Pràctics
Exercici 1: Llegir un Fitxer
- Crea un fitxer anomenat
exemple.txt
amb el contingut següent:Hola, món!
- Escriu un programa en Node.js que llegeixi el contingut de
exemple.txt
i el mostri per consola.
Solució
const fs = require('fs'); fs.readFile('exemple.txt', 'utf8', (err, data) => { if (err) { console.error('Error llegint el fitxer:', err); return; } console.log('Contingut del fitxer:', data); });
Exercici 2: Escriure en un Fitxer
- Escriu un programa en Node.js que escrigui el text "Node.js és genial!" en un fitxer anomenat
sortida.txt
.
Solució
const fs = require('fs'); const contingut = 'Node.js és genial!'; fs.writeFile('sortida.txt', contingut, 'utf8', (err) => { if (err) { console.error('Error escrivint el fitxer:', err); return; } console.log('Fitxer escrit correctament.'); });
Resum
En aquesta secció, hem après com llegir i escriure fitxers utilitzant el mòdul fs
de Node.js. Hem vist com realitzar aquestes operacions de manera síncrona i asíncrona, i hem practicat amb alguns exercicis per reforçar els conceptes apresos. Ara estem preparats per avançar al següent tema, on explorarem com treballar amb streams en Node.js.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu