nodejs获取文件

代码

const fs = require('fs')
/**
 * @description 获取目录下的文件数组
 * @param {object} cfg 配置对象,搜索路径,提取文件,忽略文件,是否递归
 * @returns {array} 文件数组
 */
function filesFind(cfg){
    let arrFiles = []
    ;(function find(fPath, extract, ignoreFile, isRecursion){
        let arr = fs.readdirSync(fPath) // 可以获取改目录下面的子文件和文件夹名称
        arr.forEach((value, index, arr)=>{
            if(fs.statSync(`${fPath}/${value}`).isDirectory()){ // 判断是否为文件夹
                if(isRecursion) find(`${fPath}/${value}`, extract, ignoreFile, isRecursion)
                else arrFiles.push(`${fPath}/${value}`)
            }
            else {
                if(extract.slice(-1)[0]){ // 是否为空,如果为空,则提取全部
                    if(!extract.some((val) => value.endsWith(val))) {
                        return
                    }
                }
                if(! ignoreFile.some((val)=> value.endsWith(val))){ // 忽略ignoreFile里面的文件
                    arrFiles.push(`${fPath}/${value}`)
                }
            } 
        })
    })(cfg.path, cfg.extract, cfg.ignoreFile, cfg.isRecursion)
    return arrFiles
}
// 配置
let config = {
    path: __dirname,  // 搜索路径 或者""F:\\Html" 注意要打'\\',不能'\'要转义或者直接写'/'
    extract: ["html"], // 提取文件的名称,支持后缀查询,如果为空,则提取全部
    ignoreFile: [], // 忽略文件的名称,支持后缀查询 优先级大于extract
    isRecursion: true // 是否递归取文件目录下面的所有文件夹
}
console.log(filesFind(config ))

结果演示

  • 可以自己修改配置进行测试
    演示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值