Utilizzo del file system e degli stream
Imparate a leggere e scrivere file in Node.js usando il modulo fs, sia in modo sincrono sia asincrono, e scoprite come gli stream consentano di elaborare grandi quantità di dati in modo efficiente.
Utilizzo del file system e degli stream è una lezione Node.js Backend Development Bootcamp gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Node.js Backend Development Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Node.js Backend Development Bootcamp include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Why the File System Matters
Most backends eventually read or write files on disk — logs, config, uploads, reports. Node's built-in fs module handles it all; just require it.
const fs = require('fs');
console.log(typeof fs.readFile);Synchronous vs Asynchronous
Most fs methods come in two flavors: sync (like readFileSync) blocks the event loop, async doesn't. On servers, always prefer async.
const fs = require('fs');
const data = fs.readFileSync('config.txt', 'utf8');
console.log(data);Reading a File Asynchronously
The classic callback form gives you error first, then data. Always check err before touching the data — a missing file or bad permission lands there.
const fs = require('fs');
fs.readFile('notes.txt', 'utf8', (err, data) => {
if (err) { console.error('Failed:', err.message); return; }
console.log('File says:', data);
});The Promise-Based API
Modern Node exposes a promise-based API under fs/promises — pairs perfectly with async/await and skips callback nesting entirely.
const fs = require('fs/promises');
async function load() {
const data = await fs.readFile('notes.txt', 'utf8');
console.log(data);
}
load();Writing Files
Use writeFile to create or overwrite a file. No file? It's created. File exists? Its contents are replaced wholesale.
const fs = require('fs/promises');
async function save() {
await fs.writeFile('output.txt', 'Hello from Node!');
console.log('Saved.');
}
save();Appending Instead of Overwriting
To add to a file without wiping it, use appendFile — exactly what you want for log files that grow line by line.
const fs = require('fs/promises');
async function log(line) {
await fs.appendFile('app.log', line + '\n');
}
log('Server started');Working with Paths
Hard-coded paths break across operating systems. The path module fixes that: path.join uses the right separator, and __dirname is the current file's folder.
const path = require('path');
const full = path.join(__dirname, 'data', 'users.json');
console.log(full);Checking If a File Exists
Don't check existence first — that risks race conditions. Just try the operation and catch the error; a missing file throws with code ENOENT.
const fs = require('fs/promises');
async function read() {
try {
return await fs.readFile('maybe.txt', 'utf8');
} catch (err) {
if (err.code === 'ENOENT') return 'default content';
throw err;
}
}Why Streams Exist
Reading a 2 GB file with readFile loads it all into memory — a crash waiting to happen. Streams process data in small chunks, keeping memory low.
const fs = require('fs');
const stream = fs.createReadStream('huge.log', 'utf8');
stream.on('data', chunk => console.log('Got', chunk.length, 'bytes'));Piping Streams Together
The power move with streams is pipe: connect a readable straight to a writable. Node handles backpressure so a fast reader won't flood a slow writer.
const fs = require('fs');
const read = fs.createReadStream('input.txt');
const write = fs.createWriteStream('copy.txt');
read.pipe(write);Listing and Creating Directories
The fs module manages folders too: mkdir creates directories (add { recursive: true } for nested paths), and readdir lists contents.
const fs = require('fs/promises');
async function setup() {
await fs.mkdir('uploads', { recursive: true });
const files = await fs.readdir('.');
console.log(files);
}
setup();Quick Check
Test your understanding of file operations.
Recap
You can now work the file system: fs's sync/callback/promise APIs, async on servers, basic I/O, cross-platform path, and streams for big files.
Domande Frequenti
La lezione «Utilizzo del file system e degli stream» è gratuita?
Sì — il testo completo di «Utilizzo del file system e degli stream» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Node.js Backend Development Bootcamp, passa a CoddyKit PRO. Il corso Node.js Backend Development Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Utilizzo del file system e degli stream»?
Imparate a leggere e scrivere file in Node.js usando il modulo fs, sia in modo sincrono sia asincrono, e scoprite come gli stream consentano di elaborare grandi quantità di dati in modo efficiente. Eserciti Node.js Backend Development Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Node.js Backend Development Bootcamp?
Non è richiesta alcuna esperienza precedente. Node.js Backend Development Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Utilizzo del file system e degli stream»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Node.js Backend Development Bootcamp?
Sì. Ogni lezione Node.js Backend Development Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Introduzione a Node.js e NPM
- Spiegazione del sistema dei moduli di Node.js
- JavaScript asincrono ed event loop
- Utilizzo del file system e degli stream