我的个人博客

读取文件夹内所有文件名

Published on
Published on
/2 mins read/---

这是一个使用Node.js的fs模块读取文件夹内所有文件名的简单函数。

read-files.js
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)