如何在Node.js中删除子文件夹及内容但保留根目录文件
在Node.js中删除指定子文件夹并保留根目录文件
你可以直接使用Node.js内置的fs模块(结合path模块处理路径)来实现需求,无需额外安装第三方依赖。以下提供同步和异步两种实现方式:
同步实现(适合简单脚本场景)
同步方式代码直观、执行顺序明确,适合一次性执行的脚本场景:
const fs = require('fs'); const path = require('path'); // 定义目标根文件夹路径 const parentDir = path.join(__dirname, 'Parent'); // 要删除的子文件夹列表 const foldersToDelete = ['folder1', 'folder2']; foldersToDelete.forEach(folderName => { const folderPath = path.join(parentDir, folderName); // 递归删除文件夹及其所有内容,force参数确保文件夹不存在时不报错 fs.rmSync(folderPath, { recursive: true, force: true }); }); console.log('指定文件夹已成功删除');
异步实现(适合非阻塞场景)
如果你的应用需要非阻塞执行,推荐使用fs.promises的异步API:
const fs = require('fs').promises; const path = require('path'); async function deleteTargetFolders() { const parentDir = path.join(__dirname, 'Parent'); const foldersToDelete = ['folder1', 'folder2']; // 并行删除所有目标文件夹 await Promise.all( foldersToDelete.map(folderName => { const folderPath = path.join(parentDir, folderName); return fs.rm(folderPath, { recursive: true, force: true }); }) ); console.log('指定文件夹已成功删除'); } // 执行函数并捕获错误 deleteTargetFolders().catch(err => console.error('删除过程出错:', err));
关键参数说明
recursive: true:允许递归删除文件夹及其内部的所有文件和子文件夹force: true:当目标文件夹不存在时,不会抛出错误,避免脚本意外终止
内容的提问来源于stack exchange,提问作者wanderors
相关产品推荐
相关产品推荐

