Node.js同步目录遍历示例
node.js 的目录遍历写法还蛮常用的,尤其是做工具脚本或者批量文件的时候,能省不少事儿。这篇示例走的是同步遍历路线,代码简单直接,不绕弯子,适合入门也适合留着做模板。用到了fs.readdirSync
和fs.statSync
,配合path.join
拼路径,递归一层层往下翻,响应也快。
核心逻辑就是一个travel
函数,传个目录进来,它会一层层遍历,碰到文件就执行回调,碰到文件夹就继续往下递归,典型的深度优先遍历写法。
const fs = require('fs');
const path = require('path');
function travel(dir, callback) {
fs.readdirSync(dir).forEach((file) => {
var pathname = path.join(dir, file);
if (fs.statSync(pathname).isDirectory()) {
travel(pathname, callback);
} else {
callback(pathname);
}
});
}
哦对,如果你目录大或者文件多,建议换成异步写法,不然容易卡住主线程。想轻松一点管理目录结构,也可以看看Dirio
这种模块,能直接把结构转成 JSON,省不少麻烦。
顺手贴几个相关的扩展内容,配合着看会更全面:
- node.js 的 path 模块指南 - 和目录打交道,
path
少不了 - fs 模块操作文件和目录 - 基础操作都在这儿了
- Dirio 模块 - 目录和 JSON 互转,挺方便
如果你也经常文件夹,不妨把这段代码收着,说不定哪天就用上了。
17.84KB
文件大小:
评论区