node.js实例:删除指定目录下所有文件与文件夹的方法总结
一、功能需求
删除指定目录下所有文件夹与文件
二、解决方法:
方法1. 使用递归函数进行文件夹与文件的删除:
const fs = require('fs');
const path = require('path');
function deleteFolderRecursive(folderPath) {
if (fs.existsSync(folderPath)) {
fs.readdirSync(folderPath).forEach(file => {
const curPath = path.join(folderPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
deleteFolderRecursive(curPath); // 递归删除子文件夹
} else {
fs.unlinkSync(curPath); // 删除文件
}
});
fs.rmdirSync(folderPath); // 删除空文件夹
}
}
const folderPath = 'path/to/folder';
deleteFolderRecursive(folderPath);
代码说明:
上述代码中使用了 Node.js 的内置模块 fs 和 path,通过递归调用 deleteFolderRecursive 函数,实现了指定目录下的所有文件和文件夹的删除操作。
'path/to/folder' 表示实际目录的路径。
fs.existsSync 用于同步判断文件或文件夹是否存在;判断存在后,调用fs.readdirSync(folderPath),用于读取该目录下的所有文件与文件夹,返回值为数组形式;再调用forEach遍历返回的数组元素。
fs.lstatSync函数用于获取指定路径的文件或文件夹的统计信息,继而调用isDirectory()判断该路径是否为目录;若是目录,则继续调用deleteFolderRecursive递归函数,否则直接调用fs.unlinkSync来删除文件
方法2:使用fs-extra模块【推荐使用】
const fs = require('fs-extra');
const path = require('path');
let filePath = path.join(__dirname,'tmp');
if(fs.existsSync(filePath)){
fs.removeSync(filePath);
console.log('删除目录',filePath,'成功!');
}
运行上述代码后,控制台提示“删除目录 E:\nodeTest\tmp 成功!”,指定的tmp文件夹直接删除。
说明:fs-extra模块是Node.js的扩展文件系统模块,提供了更多的方法来操作文件,包括删除文件、文件夹等。这里使用fs-extra模块的removeSync方法删除指定目录,同时该目录下的文件夹与文件全部都会删除,不需要自己写递归算法。
PS:这里笔者测试使用的 fs-extra 模块版本为11.1.1,官方地址:https://www.npmjs.com/package/fs-extra
方法3:使用recursive-fs模块
const rfs = require('recursive-fs');
const path = require('path');
let filePath = path.join(__dirname,'tmp');
rfs.remove(filePath,(err)=>{
if(err){
console.log(err)
}else{
console.log('删除目录',filePath,'成功!');
}
})
同上例代码,运行上述代码后,控制台提示“删除目录 E:\nodeTest\tmp 成功!”,指定的tmp文件夹直接删除。
说明:recursive-fs也提供了文件扩展功能,调用remove方法可直接删除指定目录,并且不需要自己编写递归方法。
PS:这里笔者测试使用的 recursive-fs 模块版本为2.1.0,官方地址:https://www.npmjs.com/package/recursive-fs
附:关于node.js文件操作可参考本站前面的文章:
相关阅读
- node.js实例:判断文本中是否包含数组中给定的词【基于s
- node.js实例:使用 crypto 模块获取apk文件 md5 值
- node.js实例:使用 adbkit-apkreader 模块获取apk文件包
- node.js实例:使用 xpath-html 模块基于XPath模式获取ht
- node.js实例:使用pinyin-pro模块实现中文转拼音首字母
- node.js实例:axios模块根据URL获取网页源码
- node.js实例:使用crypto进行加密【MD5、SHA1、HMAC、AE
- Java 实例 - 查看主机指定文件的最后修改时间
- Java 实例 - 获取远程文件大小
- Java 实例 - 删除集合中指定元素