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