如何操作 Node.js 中带有承诺的基于回调的 fs.lstat()方法?
原文:https://www . geesforgeks . org/操作方法-基于回调的-fs-lstat-带节点承诺的方法-js/
fs.lstat() 方法是在 Node.js 的 File System 模块中定义的,File System 模块基本上就是和用户电脑的硬盘进行交互。lstat()方法使用在 stats 对象上定义的方法(lstat 提供的数据)给出了文件和文件夹的一些特定信息。 fs . lstat()方法基于回调。使用回调方法导致回调嵌套或回调地狱问题的可能性很大。因此为了避免这种情况,我们几乎总是喜欢使用基于承诺的方法。使用一些额外的 node.js 方法,我们可以用 promise 方式操作一个基于回调的方法。 语法:
fs.lstat(path, options)
注意:不需要回调,因为我们是用承诺的方式操作的。 参数:该方法接受两个参数,如上所述,如下所述:
- 路径:它是一个字符串、缓冲区或 url,用于指定目录的路径,我们尝试读取该目录的内容。
- 选项:为可选参数。一个选项参数是“bigint”,它是一个布尔值。这里我们指定 fs.lstat()返回的 stats 对象中的数值是否为 bigint(默认值-false)。
返回值:如果方法对承诺进行操作,则返回已解决或已拒绝的承诺。如果成功读取目录,则使用 stats 对象解析 Promise 否则,如果出现任何错误,则使用 error 对象拒绝 Promise(例如,指定的目录不存在或没有读取文件的权限等)。 从解析的承诺返回的 stats 对象中定义了一些属性和方法,这有助于获得一些关于目标文件或文件夹的具体细节。下面详细说明了一些方法。
- stats.isDirectory(): 如果 stats 对象描述文件系统目录,则返回 true。
- stats.isFile(): 如果 stats 对象描述了一个常规文件,则返回 true。
- stats.isSocket(): 如果 stats 对象描述了一个套接字,则返回 true。
- stats . issymbolilink():如果 stats 对象描述了一个符号链接,则返回 true。
- stats.isFile(): 如果 stats 对象描述了一个常规文件,则返回 true。
- stats.isFIFO(): 如果 stats 对象描述了先进先出管道,则返回 true。
- stats.size: 以字节为单位指定文件的大小。
- stats.blocks: 它指定为文件分配的块数。
示例 1:文件名:index.js
java 描述语言
// Program to identify files and folders
// of a directory
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
// Convert callback based methods to
// promise based methods
const readDir = util.promisify(fs.readdir)
const lStat = util.promisify(fs.lstat)
const fileOrFolder = async (path) => {
const filenames = await readDir(path)
for (let filename of filenames) {
// Calling lstat method to give the
// stats object for every directory
const stats = await lStat(filename)
// Check file or folder
if (stats.isFile()) {
console.log(
`${filename} ---------> File`)
} else {
console.log(
`${filename} ---------> Folder`)
}
}
}
// Driver code
// The process.cwd() gives current
// working directory
fileOrFolder(process.cwd())
// If promise is rejected
.catch(err => {
console.log(`Error occurs,
Error code -> ${err.code},
Error No -> ${err.errno} `);
});
版权属于:月萌API www.moonapi.com,转载请注明出处