这是一个使用Node.js的fs
模块读取文件夹内所有文件名的简单函数。
import fs from 'fs'
import path from 'path'
/**
* 读取文件夹内所有文件名
* @param {string} dirPath - 要读取的文件夹路径
* @param {Array<string>} [arrayOfFiles=[]] - 文件数组(用于递归)
* @returns {Array<string>} - 文件路径数组
*/
export function getAllFiles(dirPath, arrayOfFiles = []) {
const files = fs.readdirSync(dirPath)
files.forEach((file) => {
const filePath = path.join(dirPath, file)
if (fs.statSync(filePath).isDirectory()) {
arrayOfFiles = getAllFiles(filePath, arrayOfFiles)
} else {
arrayOfFiles.push(filePath)
}
})
return arrayOfFiles
}
使用方法
import { getAllFiles } from './read-files'
// 获取当前目录下所有文件
const files = getAllFiles('.')
console.log(files)
// 获取特定目录下所有文件
const publicFiles = getAllFiles('./public')
console.log(publicFiles)
过滤特定文件类型
如果你只想获取特定类型的文件,你可以在返回结果上使用filter
方法:
// 只获取.js文件
const jsFiles = getAllFiles('./src').filter((file) => file.endsWith('.js'))
console.log(jsFiles)
// 只获取.md和.mdx文件
const mdFiles = getAllFiles('./content').filter((file) => {
return file.endsWith('.md') || file.endsWith('.mdx')
})
console.log(mdFiles)