Stat e fstat per ottenere informazioni su un file - Modulo fs di NodeJS

Stat e fstat per ottenere informazioni su un file  - Modulo fs di NodeJS

Per ottenere informazioni in modo asincrono su un file possiamo utilizzare stat oppure fstat se è disponibile il file descriptor del file.

indice

Il metodo stat

Come detto precedentemente, con stat possiamo estrapolare informazioni relative ai file, in particolar modo è utile per estrarre le informazioni seguenti:

  • dev : restituisce l'identità numerica del dispositivo in cui si trova il file.
  • mode : restituisce il tipo di file e la modalità come bit-field.
  • nlink : restituisce il numero di collegamenti reali per il file.
  • uid : restituisce l'identità numerica dell'utente a cui appartiene il file.
  • gid : restituisce l'identità numerica del gruppo a cui appartiene il file.
  • rdev : restituisce l'identità numerica del dispositivo in cui è memorizzato il file.
  • blksize : restituisce la dimensione del blocco per le operazioni di I/O nel file system in byte.
  • ino : restituisce il numero "Inode" del file specificato dal file system.
  • size : restituisce la dimensione del file in byte.
  • blocks : restituisce il numero di blocchi allocati per il file.
  • atimeMs : restituisce il timestamp dell'ultimo accesso al file (espressa in millisecondi)
  • mtimeMs : restituisce il timestamp quando il file è stato modificato l'ultima volta (espressa in millisecondi).
  • ctimeMs : restituisce il timestamp quando lo stato del file è stato modificato l'ultima volta (espressa in millisecondi)
  • birthtimeMs : restituisce il timestamp quando il file viene creato (espressa in millisecondi)
  • atime : restituisce l'ora e la data dell'ultimo accesso al file.
  • mtime : restituisce il timestamp dell'ultima modifica del file.
  • ctime : restitutisce il timestamp di quando lo stato del file è stato modificato l'ultima volta.
  • birthtime : restituisce il timestamp quando è stato creato il file.

Per quanto riguarda atime , mtime, ctime, birthtime essi sono istanze dell'oggetto nativo javascript date. Questo vuol dire che possiamo utilizzare tutti i metodi di date per ottenere informazioni sulla data di ultimo accesso, creazione, modifica ecc...

stat.js

const fs = require('fs');

fs.stat('fileCreato.txt', (err,stats) => {
    if(err) throw err;
    console.log(stats);
});

Spiegazione step by step:

const fs = require('fs');

Importiamo il modulo nativo fs di node

fs.stat('fileCreato.txt', (err,stats) => {

Per leggere informazioni riguardanti il file scriviamo fs.stats, come primo parametro inseriamo il percorso ed il nome del file su cui estrapolare informazioni (fileCreato.txt) come secondo parametro la callback di gestione, dove al suo interno metteremo come primo parametro l'oggetto err e come secondo parametro l'oggetto stats

Tramite l'oggetto stats accediamo a tutte le informazioni sul file

    if(err) throw err;
    console.log(stats);

con if(err) throw err andiamo a gestire un eventuale errore e console.log(stats) per riportare l'output del codice

Output del codice :

Output di stats su un file txt

Usiamo stat per estrarre la data e l'ora della creazione del file

stat-example.js

const fs = require('fs');

fs.stat('fileCreato.txt', (err,stats) => {
    if(err) throw err;
    const dataint = stats.birthtime.toLocaleDateString();
    const timeint = stats.birthtime.toLocaleTimeString();
    console.log('File creato il ' + dataint + ' alle ore ' + timeint);
});

Output del codice :

Il metodo stat di fs è utile
Estrazione delle info dal file (data e ora di creazione)

Variante di stat che fa uso delle promises

Oltre ad avere una variante sincrona, è possibile usare stat anche con le promises, vediamo un esempio:

stat-promises.js

/* versione di stat con le promises */
const fs = require('fs');

async function getInfoFile(file) {
    const stats = await fs.promises.stat(file);
    const biteFile = stats.size;
    console.log('Il file pesa ' + biteFile + ' byte')
};

getInfoFile('fileCreato.txt').catch(err => console.log(err));

Spiegazione step by step:

const fs = require('fs');

Importiamo il modulo nativo fs di node

async function getInfoFile(file) {

Definiamo una funzione asincrona che riceverà in input il file da cui leggere le informazioni

Tramite l'oggetto stats accediamo a tutte le informazioni sul file

    const stats = await fs.promises.stat(file);
    const biteFile = stats.size;
    console.log('Il file pesa ' + biteFile + ' byte')

Definiamo una costante che attenda la risoluzione della promise (cioè la lettura del file)

Definiamo una costante che estragga l'informazione necessaria (peso del file) con stats.size

Mostriamo in console il peso del file in byte.

getInfoFile('fileCreato.txt').catch(err => console.log(err));

Invochiamo la funzione getInfoFile passando in input fileCreato.txt e gestiamo un eventuale eccezione con .catch

Output del codice :

Output di stats utilizzando le promise.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2022
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram