fs.Dirent 类目录项,通过读取目录返回

2021-03-10  本文已影响0人  静昕妈妈芦培培

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
上一篇 下一篇

猜你喜欢

热点阅读