`fs` è un modulo di Node.js che fornisce un’API per interagire con il file system in maniera simile a quella di standard POSIX. Questo modulo fornisce metodi per leggere e scrivere file, creare directory, ecc.
Ecco alcune funzioni comuni e come utilizzarle:
Per prima cosa devi includere il modulo `fs` nel tuo script:
```
var fs = require(‘fs’);
```
1. `readFile` – legge un file in modo asincrono
```
fs.readFile(‘/path/to/file’, ‘utf8’, function(err, data) {
if (err) throw err;
console.log(data);
});
```
1. `writeFile` – scrive dati in un file in modo asincrono. Se il file esiste, viene sovrascritto
```
fs.writeFile(‘/path/to/file’, ‘Hello Node.js!’, function(err) {
if (err) throw err;
console.log(‘File written’);
});
```
1. `appendFile` – aggiunge dati alla fine del file. Se il file non esiste, viene creato
```
fs.appendFile(‘/path/to/file’, ‘Hello again, Node.js!’, function(err) {
if (err) throw err;
console.log(‘Data appended to file’);
});
```
1. `unlink` – elimina un file
```
fs.unlink(‘/path/to/file’, function(err) {
if (err) throw err;
console.log(‘File deleted’);
});
```
1. `mkdir` – crea una nuova directory
```
fs.mkdir(‘/path/to/directory’, function(err) {
if (err) throw err;
console.log(‘Directory created’);
});
```
1. `readdir` – legge il contenuto di una directory
```
fs.readdir(‘/path/to/directory’, function(err, files) {
if (err) throw err;
console.log(files);
});
```
Ognuno di questi metodi ha anche una corrispondente versione sincrona che blocca il thread until l’operazione è completa. Ad esempio, `readFileSync`, `writeFileSync`, ecc. Queste versioni sincrone devono essere utilizzate con cautela poiché possono bloccare l’intero processo Node.js. Solitamente vengono utilizzate solo per operazioni legate al setup all’avvio dell’app.