Ottenere informazioni sui file in Node.js

Ottenere informazioni sui file in Node.js

Estrarre informazioni su un file in Node.js può essere utile in molte situazioni, ad esempio per monitorare lo stato di un file, verificare i permessi o semplicemente analizzare i suoi metadati. Node.js offre diversi metodi e librerie integrate per recuperare informazioni dettagliate sui file, come dimensioni, tipo, data di modifica, e molto altro. In questo articolo, vedremo come usare questi strumenti per ottenere facilmente informazioni sui file.

Il modulo principale per gestire i file in Node.js è fs (file system). Questo modulo è incluso di default in Node.js, quindi non è necessario installare alcun pacchetto aggiuntivo. Il modulo fs offre diverse funzioni per gestire file e directory.

La funzione fs.stat() è una delle più utili per ottenere informazioni su un file. fs.stat() fornisce vari metadati del file, come dimensioni, data di modifica, permessi, e molto altro.


const fs = require('fs');

fs.stat('path/to/file.txt', (err, stats) => {
  if (err) {
    console.error('Errore:', err);
    return;
  }

  console.log('Informazioni sul file:');
  console.log('Dimensione:', stats.size); // Dimensione del file in byte
  console.log('È un file:', stats.isFile());
  console.log('È una directory:', stats.isDirectory());
  console.log('Data di creazione:', stats.birthtime); // Data di creazione
  console.log('Data ultima modifica:', stats.mtime); // Data ultima modifica
});

Proprietà chiave di stats:

  • size: la dimensione del file in byte.
  • isFile(): restituisce true se è un file.
  • isDirectory(): restituisce true se è una directory.
  • birthtime: data di creazione del file.
  • mtime: data dell'ultima modifica.

Se preferisci lavorare con le Promises o utilizzare async/await, puoi usare fs.promises.stat, che restituisce una Promise. Questa sintassi è spesso più leggibile, soprattutto per codice asincrono.


const fs = require('fs').promises;

async function getFileStats(filePath) {
  try {
    const stats = await fs.stat(filePath);
    console.log('Informazioni sul file:');
    console.log('Dimensione:', stats.size);
    console.log('È un file:', stats.isFile());
    console.log('È una directory:', stats.isDirectory());
    console.log('Data di creazione:', stats.birthtime);
    console.log('Data ultima modifica:', stats.mtime);
  } catch (error) {
    console.error('Errore:', error);
  }
}

getFileStats('path/to/file.txt');

Il modulo fs consente anche di controllare i permessi di un file attraverso la proprietà mode di fs.stat(). Questa proprietà contiene un valore numerico che rappresenta i permessi del file.


fs.stat('path/to/file.txt', (err, stats) => {
  if (err) {
    console.error('Errore:', err);
    return;
  }

  const permessi = stats.mode & 0o777; // Estrae i permessi in formato ottale
  console.log('Permessi:', permessi.toString(8)); // Converte in stringa ottale
});

Qui, 0o777 è una maschera ottale che seleziona solo i permessi. Il risultato sarà una stringa ottale come 644 o 755, che rappresenta i permessi di lettura, scrittura ed esecuzione per l'utente, il gruppo e altri utenti.

Conclusione

Node.js offre diversi strumenti potenti per lavorare con i file e ottenere le informazioni necessarie. Le funzionalità del modulo fs offrono una solida base per estrarre informazioni dettagliate sui file.