如何使用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
相关产品推荐
相关产品推荐

