Lettura di file con Node.js
Il modo più semplice per leggere un file in Node.js è utilizzare il metodo fs.readFile()
, passandogli il percorso del file, la codifica e una funzione di callback che verrà chiamata con i dati del file (e l’errore):
const fs = require("node:fs");
fs.readFile("/Users/joe/test.txt", "utf8", (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
In alternativa, puoi utilizzare la versione sincrona fs.readFileSync()
:
const fs = require("node:fs");
try {
const data = fs.readFileSync("/Users/joe/test.txt", "utf8");
console.log(data);
} catch (err) {
console.error(err);
}
Puoi anche utilizzare il metodo basato su promesse fsPromises.readFile()
offerto dal modulo fs/promises
:
const fs = require("node:fs/promises");
async function esempio() {
try {
const data = await fs.readFile("/Users/joe/test.txt", { encoding: "utf8" });
console.log(data);
} catch (err) {
console.log(err);
}
}
esempio();
Tutti e tre, fs.readFile()
, fs.readFileSync()
e fsPromises.readFile()
, leggono l’intero contenuto del file in memoria prima di restituire i dati.
Ciò significa che i file di grandi dimensioni avranno un impatto significativo sul consumo di memoria e sulla velocità di esecuzione del programma.
In questo caso, una migliore opzione è leggere il contenuto del file utilizzando gli stream.