fs.Dirent 类#
目录项(可以是文件或目录中的子目录)的表示,通过读取 fs.Dir
返回。 目录项是文件名和文件类型对的组合。
此外,当调用 fs.readdir()
或 fs.readdirSync()
(withFileTypes
选项设置为 true
)时,则生成的数组会使用 fs.Dirent
对象(而不是字符串或 Buffer
)填充。
例:递归的读取assets目录中的每一项,包含assets子目录的每一项
image.png
const fs = require('fs')
const path = require('path')
function readDir(dirpath) {
//打开目录,生成一个目录流dir
fs.opendir(dirpath, (err,dir) => {
//fs.opendir创建一个 fs.Dir(目录流),其中包含所有用于更进一步读取和清理目录的的函数
console.log('当前打开的目录路径是:' + dir.path)
let dirent;
//读取目录中的每一项
// dir.readSync()同步地读取dir中下一个目录项,当没有可读取的目录项时返回null
while(dirent = dir.readSync()) {
console.log(dirent)
//假如当前目录项是文件
if(dirent.isFile()) {
console.log(`${dirent.name}是文件`)
}
//假如当前目录项是一个子目录
if(dirent.isDirectory()) {
console.log(`${dirent.name}是目录`)
readDir(path.resolve(dirpath, dirent.name))
}
}
//异步地关闭目录
dir.close(err => {
if(err) {
console.error(err)
return
}
console.log('已关闭目录流')
})
})
}
readDir('./assets')
执行结果:
image.png
网友评论