📜  Node.js fsPromise.lstat() 方法

📅  最后修改于: 2022-05-13 01:56:23.658000             🧑  作者: Mango

Node.js fsPromise.lstat() 方法

fs.promise.lstat()方法在 Node.js 的文件系统模块中定义。文件系统模块基本上是与用户计算机的硬盘进行交互的。 lstat() 方法使用在 stats 对象上定义的方法(由 lstat 提供的数据)提供一些特定于文件和文件夹的信息。 fs.promise.lstat() 方法返回一个已解决或被拒绝的承诺,因此避免了 fs.readdir() 方法中可能发生的回调嵌套或回调地狱问题。
句法

fs.promise.lstat(path, options)

参数:此方法接受上面提到的两个参数,如下所述:
path:它是一个字符串、缓冲区或 url,它指定目录的路径,我们尝试读取其内容。
options:它是一个可选参数。一个选项参数是“bigint”,它是一个布尔值。在这里,我们通过 fs.lstat() 方法指定返回的 stats 对象中的数值是否为 bigint(默认为 false)。
返回值:它返回一个已解决或被拒绝的承诺。如果目录被成功读取,则使用 stats 对象解析承诺,否则如果发生任何错误(示例指定的目录不存在或无权读取文件等),则使用错误对象拒绝。
从已解决的 Promise 返回的 stats 对象中定义了一些属性和方法,这有助于获取有关目标文件或文件夹的一些特定详细信息。下面指定了一些方法。

  • stats.isDirectory():如果 stats 对象描述了一个文件系统目录,则返回 true。
  • stats.isFile():如果 stats 对象描述了一个常规文件,则返回 true。
  • stats.isSocket():如果 stats 对象描述了一个套接字,则返回 true。
  • stats.isSymbolicLink():如果 stats 对象描述了一个符号链接,则返回 true。
  • stats.isFile():如果 stats 对象描述了一个常规文件,则返回 true。
  • stats.isFIFO():如果 stats 对象描述了先进先出管道,则返回 true。
  • stats.size:以字节为单位指定文件的大小。
  • stats.blocks:指定为文件分配的块数。

示例 1:

javascript
// Node.js program to demonstrate the   
// Buffer.from() Method 
  
// Importing File System module
const fs = require('fs')
  
// fs.readdir() reads contents of 
// target directory 
// process.cwd() gives current 
// working directory
fs.readdir(process.cwd(), (err, filenames) => {
  if (err) {
    console.log(err)
    return
  }
  
  for (let filename of filenames) {
  
    // Calling lstat method to give the 
    // stats object for every directory
    fs.promises.lstat(filename)
  
      // If promise resolved and datas
      // are fetched
      .then(stats => {
        if (stats.isFile()) {
          console.log(`${filename} ---------> File`)
        } else {
          console.log(`${filename} ---------> Folder`)
        }
      })
  
      // If promise is rejected
      .catch(err => {
        console.log(err)
      })
  }
})


javascript
// Node.js program to demonstrate the   
// Buffer.from() Method 
  
// Importing File System module
const fs = require('fs')
  
// The fs.readdir() method reads the 
// contents of target directory
// The process.cwd() method gives the
// current working directory
fs.readdir(process.cwd(), async (err, filenames) => {
  if (err) {
    console.log(err)
    return
  }
  for (let filename of filenames) {
  
    // Calling lstat method to give the
    // stats object for every directory
    fs.promises.lstat(filename)
  
      // If promise resolved and datas
      // are fetched
      .then(stats => {
        console.log(
          `${filename} --------> ${stats.size} bytes`)
      })
  
      // If promise is rejected
      .catch(err => {
        console.log(err)
      })
  }
})


输出:

示例 2:

javascript

// Node.js program to demonstrate the   
// Buffer.from() Method 
  
// Importing File System module
const fs = require('fs')
  
// The fs.readdir() method reads the 
// contents of target directory
// The process.cwd() method gives the
// current working directory
fs.readdir(process.cwd(), async (err, filenames) => {
  if (err) {
    console.log(err)
    return
  }
  for (let filename of filenames) {
  
    // Calling lstat method to give the
    // stats object for every directory
    fs.promises.lstat(filename)
  
      // If promise resolved and datas
      // are fetched
      .then(stats => {
        console.log(
          `${filename} --------> ${stats.size} bytes`)
      })
  
      // If promise is rejected
      .catch(err => {
        console.log(err)
      })
  }
})

输出:

参考: https://nodejs.org/api/fs.html#fs_fspromises_lstat_path_options