在 Node.js 中,我们经常需要遍历文件夹中的所有文件。这种需求在前端开发中也很常见,例如需要读取静态资源文件、构建打包工具等等。本文将介绍如何使用 Node.js 遍历文件夹中的所有文件,并提供具体的代码示例。
使用 fs 模块进行遍历
Node.js 的 fs 模块提供了非常便利的方法来操作文件系统。其中,readdirSync() 方法可以用来同步地获取指定文件夹中的所有文件和文件夹名称。该方法返回一个字符串数组,每个元素表示一个文件或文件夹的名称。
const fs = require('fs'); const files = fs.readdirSync('./folder'); console.log(files); // ["file1.txt", "file2.js", "subfolder"]
接下来,我们需要递归地遍历每个子文件夹,以获取包含在其中的文件和文件夹。可以使用 fs.statSync() 方法来检查给定路径是一个文件还是文件夹,然后根据结果决定是否递归遍历子文件夹。
-- -------------------- ---- ------- -------- -------------------- - ----- ----- - --------------------- ------------------ -- - ----- -------- - ------------------ ----- ---- - ---------------------- -- -------------------- - ------------------------- -- -------- - ---- - ---------------------- -- ---- - --- - ---------------------------
上述代码通过递归调用 traverseFolder() 方法来遍历指定文件夹中的所有文件。如果某个元素是文件夹,那么就递归地调用自己来处理该文件夹;如果是文件,则输出其路径,可以在这里进行一些处理操作。
使用 glob 模块进行遍历
除了 fs 模块,还有一种更便捷的方式来遍历文件夹,那就是使用 glob 模块。glob 模块是一个非常强大的模块,它支持通配符匹配和多个文件夹的遍历等功能,可以满足各种复杂的需求。
首先需要安装 glob 模块:
npm install glob
然后就可以使用 glob.sync() 方法来获取符合条件的文件列表。下面的代码演示了如何获取指定文件夹中的所有文件。
const glob = require('glob'); const files = glob.sync('./folder/**/*'); console.log(files); // ["./folder/file1.txt", "./folder/file2.js", "./folder/subfolder/file3.css"]
通过传入 './folder/**/' 参数,我们可以获取指定文件夹及其子文件夹中的所有文件。如果想要只获取指定文件夹下的所有直接子文件,可以使用 './folder/' 参数。
总结
本文介绍了两种在 Node.js 中遍历文件夹中的所有文件的方法。使用 fs 模块需要手动递归地遍历每个子文件夹,但代码比较简单;而使用 glob 模块则可以更方便地获取符合条件的文件列表,但需要安装额外的模块。不论采用哪种方法,掌握如何遍历文件夹是前端开发者必备的技能之一。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/8740