📜  Node.js filehandle.stat() 类中的方法:FileHandle

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

Node.js filehandle.stat() 类中的方法:FileHandle

filehandle.stat()方法在 Node.js 的文件系统模块中定义。文件系统模块基本上是与用户计算机的硬盘进行交互的。 filehandle.stat() 方法使用在 stats 对象(stat 方法返回的对象)上定义的方法提供了一些特定于文件和文件夹的信息。该方法返回一个已解决或被拒绝的承诺。

句法:

filehandle.stat(options);

参数:此方法接受如上所述的单个参数,如下所述:

  • options:它是一个可选参数。一个选项参数是“bigint”,它是一个布尔值。这里我们指定 filehandle.stat() 返回的 stats 对象中的数值是否咬人(默认为假)。

返回值:它返回一个已解决或被拒绝的promise。如果目录被成功读取,则使用stats对象解决promise,否则如果发生任何错误,则以错误对象拒绝(示例指定的目录不存在或无权读取文件等) )。

从已解决的 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:此示例使用每个子目录的统计信息来区分目录的文件和文件夹。

// Node.js program to demonstrate the
// filehandle.stat() Method
  
// Importing File System and Utilities module
const fs = require('fs')
  
const fileOrFolder = async (dir) => {
    let filehandle, stats = null
  
    try {
        filehandle = await fs
            .promises.open(dir, mode = 'r+')
  
        // Stats of directory
        stats = await filehandle.stat()
    } finally {
        if (filehandle) {
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
    // File or Folder
    if (stats.isFile()) {
        console.log(`${dir} ----> File`)
    } else {
        console.log(`${dir} ----> Folder`)
    }
}
  
const allDir = fs.readdirSync(process.cwd())
allDir.forEach(dir => {
    fileOrFolder(dir)
        .catch(err => {
            console.log(`Error Occurs, Error code ->
                ${err.code}, Error NO -> ${err.errno}`)
        })
})

输出:

示例 2:此示例使用其统计信息计算每个子目录的大小。

// Node.js program to demonstrate the
// filehandle.stat() Method
  
// Importing File System and Utilities module
const fs = require('fs')
  
const sizeOfSubDirectory = async (dir) => {
    let filehandle, stats = null
  
    try {
        filehandle = await fs
            .promises.open(dir, mode = 'r+')
        //Stats of directory
        stats = await filehandle.stat()
    } finally {
        if (filehandle) {
            // Close the file if it is opened.
            await filehandle.close();
        }
    }
    //size of sub-directory
    console.log(`${dir} --------> ${stats.size} bytes`)
}
  
const allDir = fs.readdirSync(process.cwd())
allDir.forEach(dir => {
    sizeOfSubDirectory(dir)
        .catch(err => {
            console.log(`Error Occurs, Error code ->
                ${err.code}, Error NO -> ${err.errno}`)
        })  
})

输出:

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