小码哥的IT人生

首页 > JS > nodejs

node.js实例:删除指定目录下所有文件与文件夹的方法总结

nodejs 2023-09-01 18:03:39小码哥的IT人生shichen

一、功能需求

删除指定目录下所有文件夹与文件

二、解决方法:

方法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文件操作可参考本站前面的文章:

http://www.phpcodeweb.com/news/309.html

http://www.phpcodeweb.com/news/327.html

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024