Federico Lelli / SchoolNode.js & Express
LEZIONE 06 · Moduli e I/O

Moduli built-in: OS e PATH

Prima di iniziare: le parole della lezione

Built-in, OS e architettura
Built-in significa integrato nel runtime. OS è il sistema operativo. L’architettura indica la famiglia di istruzioni dell’ambiente, per esempio x64 o arm64.
Percorso assoluto e relativo
Un percorso assoluto parte dalla radice o dall’unità; uno relativo dipende da una cartella di riferimento.
Byte e separatore
Un byte è un’unità di informazione di otto bit. Il separatore divide i segmenti di un percorso: Windows e sistemi Unix possono usarne di diversi.

I moduli integrati sono già disponibili e non si installano con npm. node:os fornisce dati sul sistema; node:path gestisce percorsi in modo multipiattaforma.

// os-path.cjs
const os = require('node:os');
const path = require('node:path');
console.log(os.platform(), os.arch());
console.log('RAM totale (GiB):', (os.totalmem() / 1024**3).toFixed(1));
const file = path.join(__dirname, 'dati', 'utenti.json');
console.log(file);
console.log(path.basename(file)); // utenti.json
console.log(path.extname(file));  // .json

Esempio aggiuntivo: path.resolve('dati', 'utenti.json') crea un percorso assoluto a partire dalla directory di lavoro corrente; path.join combina segmenti e normalizza il percorso. Non concatenare a mano separatori per costruire percorsi.

Chi fa cosa, e perché

os.type() descrive il sistema, os.release() la sua release, os.freemem() la memoria libera e os.totalmem() quella totale, in byte. Dividere per 1024 ** 3 dà gibibyte, abbreviati GiB, anche quando un esempio usa genericamente l’etichetta GB.

path.join unisce segmenti e normalizza separatori e ..; path.resolve costruisce un percorso assoluto; basename estrae il nome finale e extname l’estensione. Nessuna di queste funzioni crea cartelle o verifica che il file esista: manipolano percorsi come testo.

Un altro esempio guidato

// percorsi.cjs — node percorsi.cjs
const path = require('node:path');
const os = require('node:os');
const destinazione = path.join(os.tmpdir(), 'corso-node', 'log.txt');
console.log(path.parse(destinazione));
console.log('Estensione:', path.extname(destinazione));

Come leggerlo e risultato atteso. os.tmpdir() restituisce la cartella temporanea del sistema. path.parse restituisce un oggetto con radice, cartella, nome completo, estensione e nome senza estensione. L’ultima riga stampa .txt; nessun file viene scritto.

Prova tu. Confronta path.resolve("dati") con path.join(__dirname, "dati") avviando lo script da un’altra cartella.

Torna all’indice ↑

Materiali didattici curati e rielaborati da Federico Lelli. Le fonti e i riferimenti specifici sono indicati nei materiali disponibili.