fs.mkdir 建目录(recursive: true 可连建多层)、 fs.mkdir 建目录(recursive: true 可连建多层)、 fs.mkdir 建目录(recursive: true 可连建多层)、
Node.js 词条目录
前端Wiki/Node.js/进阶/文件系统 fs

目录操作

目录操作三件套:fs.mkdir 建目录(recursive: true 可连建多层)、fs.readdir 列出目录内容、fs.stat 判断是文件还是目录。删除目录用 fs.rmdir,删整个目录树推荐 fs.rm(dir, {recursive: true})(Node 14+)。

典型场景是“遍历目录下所有特定的文件”:readdir 拿到文件名数组,逐一 stat 判断类型,配合 path.join 拼出完整路径,递归处理子目录。

  • mkdir(路径, {recursive: true}):目录已存在不报错(酌情判断)
  • readdir 拿到的只是文件名,要 path.join 才是完整路径
  • stat().isFile() / isDirectory() 区分类型;rm({recursive:true}) 删目录树
JS
const fs = require('fs');
const fsp = require('fs').promises;
const path = require('path');

async function ensureDir(dir) {
  await fsp.mkdir(dir, { recursive: true });  // 多层连建,已存在也不报错
  console.log('目录就绪:', dir);
}

// 递归找出目录下所有 .md 文件
async function walk(dir) {
  const out = [];
  for (const name of await fsp.readdir(dir)) {
    const full = path.join(dir, name);
    const st = await fsp.stat(full);
    if (st.isDirectory()) out.push(...await walk(full));
    else if (name.endsWith('.md')) out.push(full);
  }
  return out;
}

(async () => {
  await ensureDir('./tmp/docs/guide');      // 连建两层目录
  console.log(await walk('./tmp'));          // 打印找到的 md 文件
})();
本节要点目录操作:mkdir 连建、readdir 遍历、stat 判类型、rm recursive 删整树。