You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js运行时如何检测文件夹/文件是否被删除及重建?

Node.js运行时文件夹删除检测与自动重建方案

实时监听方案(推荐)

使用Node.js原生fs模块的watch方法直接监听目标目录,能第一时间捕获到目录被删除的事件:

const fs = require('fs');
const path = require('path');

const TARGET_DIR = path.resolve(__dirname, '你的目标目录路径');

// 启动时先初始化目录
async function initDir() {
  await fs.promises.mkdir(TARGET_DIR, { recursive: true, mode: 0o755 });
}

// 启动目录监听
function watchDir() {
  const watcher = fs.watch(TARGET_DIR, (eventType) => {
    // 目录状态变更触发的事件回调
  });

  watcher.on('error', async (err) => {
    // 监听的目录被删除时会触发ENOENT错误
    if (err.code === 'ENOENT') {
      console.log('目标目录被删除,正在重建...');
      await initDir();
      // 重建后重新启动监听
      watcher.close();
      watchDir();
    }
  });
}

// 启动逻辑
(async () => {
  await initDir();
  watchDir();
})();

轮询兜底方案(兼容性更强)

如果你的运行环境是网络挂载盘、虚拟文件系统等fs.watch兼容不佳的场景,可以用定时轮询做兜底检测:

const fs = require('fs');
const path = require('path');

const TARGET_DIR = path.resolve(__dirname, '你的目标目录路径');
const CHECK_INTERVAL = 1000; // 检测间隔,单位毫秒,可根据需求调整

async function checkAndRebuildDir() {
  try {
    // 检测目录是否存在且可写入
    await fs.promises.access(TARGET_DIR, fs.constants.W_OK);
  } catch (err) {
    if (err.code === 'ENOENT') {
      console.log('目标目录不存在,正在重建...');
      await fs.promises.mkdir(TARGET_DIR, { recursive: true, mode: 0o755 });
    }
  }
}

// 启动定时检测
setInterval(checkAndRebuildDir, CHECK_INTERVAL);
// 启动时先初始化一次
checkAndRebuildDir();

写入操作必加保险逻辑

无论用哪种检测方案,都可能存在检测间隙目录被删除的情况,每次写入文件前都要加目录校验逻辑,直接用带recursive: true参数的mkdir即可,该方法原生兼容目录已存在的场景,不会抛出重复创建的错误:

async function writeDataToDir(filename, data) {
  const targetPath = path.join(TARGET_DIR, filename);
  // 写入前先确保目录存在
  await fs.promises.mkdir(TARGET_DIR, { recursive: true });
  // 再执行写入操作
  await fs.promises.writeFile(targetPath, data);
}

注意事项

  • 不要单独依赖fs.existsSync做写入前的校验,从检测到写入的时间差内目录仍有可能被删除,直接调用带recursive: true的mkdir安全性更高
  • 生产环境建议将实时监听和轮询方案搭配使用,避免单方案失效导致的写入失败
  • 如果目标目录有特殊权限要求,创建目录时可以传入mode参数指定对应权限位

内容的提问来源于stack exchange,提问作者Coder2195

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:54:01