Node.js读取input目录时如何筛选获取所有green开头的文件
Node.js筛选目录下green开头文件的解决方案
基础实现(仅按文件名前缀筛选)
你可以直接对readdir返回的文件名数组调用filter方法,搭配字符串startsWith方法做前缀匹配即可,完整代码如下:
// 补全fs模块引入,原有代码缺少该引入会报错 const fs = require('fs') const { promisify } = require('util') const readdir = promisify(fs.readdir) const allFiles = await readdir('../input') // 筛选green开头的文件 const greenFiles = allFiles.filter(fileName => fileName.startsWith('green'))
注意:上述代码中的
await语法需要放在被async关键字标记的函数内部才能正常运行。如果需要兼容低版本不支持startsWith方法的Node.js环境,可以替换为正则匹配:fileName => /^green/.test(fileName)。
进阶实现(排除同名子目录,仅保留普通文件)
如果你的input目录下可能存在以green开头的子目录,需要只保留匹配前缀的普通文件,可以使用withFileTypes参数减少额外IO操作:
const fs = require('fs') const { promisify } = require('util') const readdir = promisify(fs.readdir) // 传入参数获取文件类型信息 const dirents = await readdir('../input', { withFileTypes: true }) const greenFiles = dirents // 先判断是普通文件,再匹配文件名前缀 .filter(dirent => dirent.isFile() && dirent.name.startsWith('green')) // 提取最终的文件名 .map(dirent => dirent.name)
内容的提问来源于stack exchange,提问作者mohamed mostapha
相关产品推荐
相关产品推荐

