Skip to content

Node.js-Datei-Statistiken

Jede Datei verfügt über eine Reihe von Details, die wir mit Node.js untersuchen können. Insbesondere mit der Methode stat(), die vom fs-Modul bereitgestellt wird.

Sie rufen sie auf, indem Sie einen Dateipfad übergeben, und sobald Node.js die Dateidetails erhält, ruft es die von Ihnen übergebene Callback-Funktion mit 2 Parametern auf: einer Fehlermeldung und den Dateistatistiken:

js
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
  if (err) {
    console.error(err)
  }
  // wir haben Zugriff auf die Dateistatistiken in `stats`
})

Node.js bietet auch eine synchrone Methode, die den Thread blockiert, bis die Dateistatistiken bereit sind:

js
import fs from 'node:fs'
try {
  const stats = fs.statSync('/Users/joe/test.txt')
} catch (err) {
  console.error(err)
}

Die Dateiinformationen sind in der Variablen stats enthalten. Welche Art von Informationen können wir mit den Statistiken extrahieren?

Eine Menge, darunter:

  • ob die Datei ein Verzeichnis oder eine Datei ist, mit stats.isFile() und stats.isDirectory()
  • ob die Datei ein symbolischer Link ist, mit stats.isSymbolicLink()
  • die Dateigröße in Bytes mit stats.size.

Es gibt noch andere fortgeschrittene Methoden, aber das Meiste, was Sie in Ihrem täglichen Programmieren verwenden werden, ist dies.

js
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
})

Sie können auch die auf Promises basierende Methode fsPromises.stat() verwenden, die vom Modul fs/promises angeboten wird, wenn Sie möchten:

js
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)
}

Weitere Informationen zum fs-Modul finden Sie in der Dokumentation zum Dateisystemmodul.