📌  相关文章
📜  nodejs fs 删除整个文件夹 - Javascript (1)

📅  最后修改于: 2023-12-03 15:33:11.162000             🧑  作者: Mango

Node.js fs 删除整个文件夹

在 Node.js 中使用 fs 模块删除整个文件夹可以使用以下方式:

const fs = require('fs');

function deleteFolderRecursive(path) {
  if (fs.existsSync(path)) {
    fs.readdirSync(path).forEach(function(file, index) {
      const curPath = path + "/" + file;
      if (fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
}

deleteFolderRecursive('/path/to/folder');

这个函数递归删除目录及其所有子目录和文件。如果目录不存在,函数会忽略错误。

使用 fs.lstatSync() 检查一个文件是否是目录,如果是目录则递归调用 deleteFolderRecursive(),否则删除文件。

删除文件使用 fs.unlinkSync(),删除目录使用 fs.rmdirSync()。

注意,这个函数不同于使用 shell 命令行运行 rm -rf folderrm -rf folder 是危险的操作,可能会删除系统文件和目录。使用这个函数需要小心谨慎。

示例

以下示例演示如何使用 deleteFolderRecursive 函数删除整个文件夹。

const fs = require('fs');

function deleteFolderRecursive(path) {
  if (fs.existsSync(path)) {
    fs.readdirSync(path).forEach(function(file, index) {
      const curPath = path + "/" + file;
      if (fs.lstatSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      } else { // delete file
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(path);
  }
}

// 删除整个 myDir 文件夹及其所有子目录和文件
deleteFolderRecursive('myDir');

以上示例会删除 myDir 目录及其所有子目录和文件。如果 myDir 目录不存在,则函数不会执行任何操作。

总结

使用 fs 模块中的一些函数可以轻松删除整个文件夹,但需要注意潜在的风险,小心谨慎操作。