En aquest tema, explorarem el mòdul del sistema de fitxers (File System Module) de Node.js, que permet interactuar amb el sistema de fitxers de manera senzilla i eficient. Aprendrem a llegir, escriure, actualitzar i eliminar fitxers, així com a treballar amb directoris.
Continguts
- Introducció al Mòdul del Sistema de Fitxers
- Llegir Fitxers
- Escriure Fitxers
- Actualitzar Fitxers
- Eliminar Fitxers
- Treballar amb Directoris
- Exercicis Pràctics
- Introducció al Mòdul del Sistema de Fitxers
El mòdul fs
de Node.js proporciona una API per interactuar amb el sistema de fitxers. Aquest mòdul inclou mètodes per llegir, escriure, actualitzar i eliminar fitxers, així com per treballar amb directoris.
Per utilitzar el mòdul fs
, primer cal importar-lo:
- Llegir Fitxers
Llegir Fitxers de Forma Síncrona
Per llegir un fitxer de manera síncrona, utilitzem el mètode fs.readFileSync()
. Aquest mètode bloqueja l'execució del programa fins que la lectura del fitxer es completa.
const fs = require('fs'); try { const data = fs.readFileSync('path/to/file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); }
Llegir Fitxers de Forma Asíncrona
Per llegir un fitxer de manera asíncrona, utilitzem el mètode fs.readFile()
. Aquest mètode no bloqueja l'execució del programa i utilitza una funció de callback per gestionar el resultat.
const fs = require('fs'); fs.readFile('path/to/file.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
- Escriure Fitxers
Escriure Fitxers de Forma Síncrona
Per escriure en un fitxer de manera síncrona, utilitzem el mètode fs.writeFileSync()
. Aquest mètode bloqueja l'execució del programa fins que l'escriptura del fitxer es completa.
const fs = require('fs'); try { fs.writeFileSync('path/to/file.txt', 'Hello, world!', 'utf8'); console.log('Fitxer escrit correctament'); } catch (err) { console.error(err); }
Escriure Fitxers de Forma Asíncrona
Per escriure en un fitxer de manera asíncrona, utilitzem el mètode fs.writeFile()
. Aquest mètode no bloqueja l'execució del programa i utilitza una funció de callback per gestionar el resultat.
const fs = require('fs'); fs.writeFile('path/to/file.txt', 'Hello, world!', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Fitxer escrit correctament'); });
- Actualitzar Fitxers
Afegir Contingut a un Fitxer de Forma Síncrona
Per afegir contingut a un fitxer de manera síncrona, utilitzem el mètode fs.appendFileSync()
.
const fs = require('fs'); try { fs.appendFileSync('path/to/file.txt', '\nAfegint més contingut', 'utf8'); console.log('Contingut afegit correctament'); } catch (err) { console.error(err); }
Afegir Contingut a un Fitxer de Forma Asíncrona
Per afegir contingut a un fitxer de manera asíncrona, utilitzem el mètode fs.appendFile()
.
const fs = require('fs'); fs.appendFile('path/to/file.txt', '\nAfegint més contingut', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Contingut afegit correctament'); });
- Eliminar Fitxers
Eliminar Fitxers de Forma Síncrona
Per eliminar un fitxer de manera síncrona, utilitzem el mètode fs.unlinkSync()
.
const fs = require('fs'); try { fs.unlinkSync('path/to/file.txt'); console.log('Fitxer eliminat correctament'); } catch (err) { console.error(err); }
Eliminar Fitxers de Forma Asíncrona
Per eliminar un fitxer de manera asíncrona, utilitzem el mètode fs.unlink()
.
const fs = require('fs'); fs.unlink('path/to/file.txt', (err) => { if (err) { console.error(err); return; } console.log('Fitxer eliminat correctament'); });
- Treballar amb Directoris
Crear un Directori
Per crear un directori, utilitzem el mètode fs.mkdir()
.
const fs = require('fs'); fs.mkdir('path/to/directory', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directori creat correctament'); });
Llegir el Contingut d'un Directori
Per llegir el contingut d'un directori, utilitzem el mètode fs.readdir()
.
const fs = require('fs'); fs.readdir('path/to/directory', (err, files) => { if (err) { console.error(err); return; } console.log('Contingut del directori:', files); });
Eliminar un Directori
Per eliminar un directori, utilitzem el mètode fs.rmdir()
.
const fs = require('fs'); fs.rmdir('path/to/directory', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directori eliminat correctament'); });
- Exercicis Pràctics
Exercici 1: Llegir i Escriure Fitxers
- Crea un fitxer anomenat
example.txt
i escriu-hi el text "Hola, Node.js!". - Llegeix el contingut del fitxer
example.txt
i mostra'l per consola.
Solució
const fs = require('fs'); // Escriure en el fitxer fs.writeFile('example.txt', 'Hola, Node.js!', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Fitxer escrit correctament'); // Llegir el fitxer fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log('Contingut del fitxer:', data); }); });
Exercici 2: Treballar amb Directoris
- Crea un directori anomenat
testDir
. - Crea un fitxer anomenat
testFile.txt
dins del directoritestDir
amb el text "Aquest és un fitxer de prova". - Llegeix el contingut del directori
testDir
i mostra'l per consola. - Elimina el fitxer
testFile.txt
i el directoritestDir
.
Solució
const fs = require('fs'); // Crear el directori fs.mkdir('testDir', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directori creat correctament'); // Escriure en el fitxer dins del directori fs.writeFile('testDir/testFile.txt', 'Aquest és un fitxer de prova', 'utf8', (err) => { if (err) { console.error(err); return; } console.log('Fitxer escrit correctament'); // Llegir el contingut del directori fs.readdir('testDir', (err, files) => { if (err) { console.error(err); return; } console.log('Contingut del directori:', files); // Eliminar el fitxer fs.unlink('testDir/testFile.txt', (err) => { if (err) { console.error(err); return; } console.log('Fitxer eliminat correctament'); // Eliminar el directori fs.rmdir('testDir', { recursive: true }, (err) => { if (err) { console.error(err); return; } console.log('Directori eliminat correctament'); }); }); }); }); });
Conclusió
En aquest tema, hem après a utilitzar el mòdul del sistema de fitxers de Node.js per llegir, escriure, actualitzar i eliminar fitxers, així com per treballar amb directoris. Aquests coneixements són fonamentals per a qualsevol desenvolupador que treballi amb Node.js, ja que permeten gestionar fitxers i directoris de manera eficient. En el proper tema, explorarem com crear un servidor HTTP simple amb 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