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

如何使用Node.js检测文件夹中是否存在.mp4文件并自动删除

Node.js 实现指定目录下.mp4残留文件自动清理

完整实现代码

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

// 替换为你要清理的目标文件夹绝对路径
const TARGET_DIR = '/your/target/directory/path';

function cleanMp4Files() {
  try {
    // 校验目标目录是否存在
    if (!fs.existsSync(TARGET_DIR)) {
      throw new Error(`目标目录${TARGET_DIR}不存在`);
    }

    // 读取目录下所有条目
    const dirEntries = fs.readdirSync(TARGET_DIR, { withFileTypes: true });

    dirEntries.forEach(entry => {
      // 仅处理文件、跳过子目录
      if (entry.isFile()) {
        // 不区分大小写匹配.mp4后缀,兼容大写.MP4格式
        if (path.extname(entry.name).toLowerCase() === '.mp4') {
          const filePath = path.join(TARGET_DIR, entry.name);
          try {
            fs.unlinkSync(filePath);
            console.log(`已删除残留文件:${filePath}`);
          } catch (delErr) {
            console.error(`删除文件${filePath}失败:`, delErr.message);
          }
        }
      }
    });
  } catch (err) {
    console.error('清理任务执行失败:', err.message);
  }
}

// 直接执行一次清理
cleanMp4Files();

// 如需定时执行(示例:每2小时执行一次),取消注释下方代码即可
// setInterval(cleanMp4Files, 2 * 60 * 60 * 1000);

核心逻辑说明

  • 依赖Node.js原生fs、path模块,无需安装第三方依赖
  • 先校验目标目录合法性,避免路径不存在导致运行报错
  • 遍历目录下所有条目,仅匹配文件类型、且后缀为.mp4的内容
  • 匹配到目标文件后调用unlinkSync同步删除,单个文件删除失败不会中断整体清理任务
  • 内置全局异常捕获,运行报错会输出明确的错误信息便于排查

定时运行配置

如果需要定期执行清理任务,有两种可选方案:

  • 脚本内直接实现:取消代码末尾setInterval相关注释,按需求调整间隔时长即可
  • 系统定时任务触发:Linux服务器可配置crontab定时执行脚本,Windows服务器可使用任务计划程序触发,无需常驻Node.js进程

注意事项

  • 运行脚本的系统用户需要拥有目标目录的读取权限,以及对应.mp4文件的删除权限,否则会抛出权限异常
  • 首次上线前建议先将fs.unlinkSync替换为打印文件路径的逻辑,确认匹配的文件均为需要删除的内容后再开启删除逻辑,避免误删
  • 若目标目录下文件量级较大,同步API会阻塞事件循环,高并发场景建议替换为fs.promises下的异步API实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:27:05