Estadísticas de archivos de Node.js
Cada archivo viene con un conjunto de detalles que podemos inspeccionar usando Node.js. En particular, usando el método stat()
proporcionado por el módulo fs.
Lo llamas pasando una ruta de archivo, y una vez que Node.js obtiene los detalles del archivo, llamará a la función de callback que pases, con 2 parámetros: un mensaje de error y las estadísticas del archivo:
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
if (err) {
console.error(err)
}
// tenemos acceso a las estadísticas del archivo en `stats`
})
Node.js también proporciona un método síncrono, que bloquea el hilo hasta que las estadísticas del archivo estén listas:
import fs from 'node:fs'
try {
const stats = fs.statSync('/Users/joe/test.txt')
} catch (err) {
console.error(err)
}
La información del archivo está incluida en la variable stats. ¿Qué tipo de información podemos extraer usando las estadísticas?
Mucha, incluyendo:
- si el archivo es un directorio o un archivo, usando
stats.isFile()
ystats.isDirectory()
- si el archivo es un enlace simbólico usando
stats.isSymbolicLink()
- el tamaño del archivo en bytes usando
stats.size
.
Hay otros métodos avanzados, pero la mayor parte de lo que usarás en tu programación diaria es esto.
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
if (err) {
console.error(err)
return
}
stats.isFile() // true
stats.isDirectory() // false
stats.isSymbolicLink() // false
stats.size // 1024000 //= 1MB
})
También puedes usar el método basado en promesas fsPromises.stat()
ofrecido por el módulo fs/promises
si lo deseas:
import fs from 'node:fs/promises'
try {
const stats = await fs.stat('/Users/joe/test.txt')
stats.isFile() // true
stats.isDirectory() // false
stats.isSymbolicLink() // false
stats.size // 1024000 //= 1MB
} catch (err) {
console.log(err)
}
Puedes leer más sobre el módulo fs en la documentación del módulo del sistema de archivos.