如何在Nodejs应用中获取文件元数据信息?

1,633 阅读2分钟

how to get file metadata information such as size  from Nodejs Application

文件包含内容和类型。除此以外,你还会有一个文件的元数据。

在Windows等操作系统中,获取文件信息是非常容易的。

如何在Nodejs中获得文件的元数据信息?

Nodejs提供了内置的模块--fs ,它包含stat()statSync() 方法来获取文件或目录的元数据属性。

它提供了两个方法

  • fs.statSync方法
  • fs.start方法

我们有两种方法可以完成它。

nodejs fs统计方法

stat()是一个异步操作,用于读取文件并打印元数据的对象。

fs.stat(path, options, callbackfunction)

path 是文件或目录的绝对或相对路径 是传递的可选参数,用于自定义输出,bigint是false或true。true表示该选项返回的数值 是一个函数,其中包含第一个参数error,如果出现错误,第二个参数是返回文件元数据的对象。options``callback

在Nodejs的异步操作中包含一个回调

const fs = require("fs")

fs.stat("./package.json", (err, fileObject) => {
    if (err) {
        console.log(err)
    } else {
        console.log(fileObject)
    }
})

输出:

Stats {
  dev: 3330445139,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: 4096,
  ino: 562949955554406,
  size: 204,
  blocks: 0,
  atimeMs: 1645280252542.7854,
  mtimeMs: 1644120598975.729,
  ctimeMs: 1644120598975.729,
  birthtimeMs: 1642860250548.1833,
  atime: 2022-02-19T14:17:32.543Z,
  mtime: 2022-02-06T04:09:58.976Z,
  ctime: 2022-02-06T04:09:58.976Z,
  birthtime: 2022-01-22T14:04:10.548Z
}

它提供了以下方法

const fs = require("fs")

fs.stat("./package.json", (err, fileObject) => {
    if (err) {
        console.log(err)
    } else {
        console.log(fileObject.isFile()) // return true for files
        console.log(fileObject.isDirectory())// true for directory
        console.log(fileObject.isBlockDevice())
        console.log(fileObject.isSymbolicLink()) return true for symbolic link
        console.log(fileObject.isCharacterDevice())
        console.log(fileObject.isFIFO())
        console.log(fileObject.isSocket())
    }
})

输出:

true
false
false
false
false
false
false

Nodejs fs statSync函数

statSync是start函数的同步版本,它按顺序执行,等待执行结束后再进入下一行。

下面是一个语法

fs.statSync(path, options)

path 是资源(文件,目录)的绝对或相对路径 options包含javascript,其中bigint是key,value是true/false。如果是true,输出返回biginteger格式的数字。

const fileInfo = fs.statSync('./package.json')
console.log(fileInfo)