首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Node.js删除目录中的所有文件和子目录

如何使用Node.js删除目录中的所有文件和子目录
EN

Stack Overflow用户
提问于 2021-10-13 12:15:21
回答 2查看 183关注 0票数 3

我正在使用node.js,需要清空一个文件夹。我读了很多删除文件或文件夹的文章。但是我没有找到答案,如何删除我的文件夹Test中的所有文件和文件夹,而不删除我的文件夹Test`本身。

我尝试使用fsextra-fs找到解决方案。很高兴能得到一些帮助!

EN

回答 2

Stack Overflow用户

发布于 2021-10-13 13:43:38

您可以使用del包递归删除目录下的文件和文件夹,而不删除父目录:

  1. 安装必需的依赖项: npm install del

  1. 使用以下代码删除Test目录中的子目录或文件,而不删除测试目录本身: const del = Test (“del”);del.sync(‘Test/**’,'!Test');
票数 1
EN

Stack Overflow用户

发布于 2021-10-13 13:56:51

EDIT 1:@Harald,您应该使用del库,该库由@ziishaned发布。因为它更加干净和可伸缩。并使用我的答案来了解它是如何在幕后工作的:)

EDIT: 2(2021年12月26日):我不知道有一个名为fs.rmfs方法,您可以使用它来完成只需一行代码的任务。

代码语言:javascript
运行
复制
fs.rm(path_to_delete, { recursive: true }, callback)
// or use the synchronous version
fs.rmSync(path_to_delete, { recursive: true })

上面的代码类似于linux shell命令:rm -r path_to_delete

我们使用fs.unlinkfs.rmdir分别删除文件和空的目录。要检查路径是否表示目录,我们可以使用fs.stat()

因此,我们必须列出test目录中的所有内容,并逐个删除它们。

顺便说一下,我将使用上面提到的fs方法的synchronous版本(例如,fs.readdirSync而不是fs.readdir)来简化我的代码。但是如果你正在编写一个生产应用程序,那么你应该使用所有fs方法的asynchronous版本。我把这里的文档交给你去读,Node.js v14.18.1 File System documentation

代码语言:javascript
运行
复制
const fs = require("fs");
const path = require("path");

const DIR_TO_CLEAR = "./trash";

emptyDir(DIR_TO_CLEAR);

function emptyDir(dirPath) {
  const dirContents = fs.readdirSync(dirPath); // List dir content

  for (const fileOrDirPath of dirContents) {
    try {
      // Get Full path
      const fullPath = path.join(dirPath, fileOrDirPath);
      const stat = fs.statSync(fullPath);
      if (stat.isDirectory()) {
        // It's a sub directory
        if (fs.readdirSync(fullPath).length) emptyDir(fullPath);
        // If the dir is not empty then remove it's contents too(recursively)
        fs.rmdirSync(fullPath);
      } else fs.unlinkSync(fullPath); // It's a file
    } catch (ex) {
      console.error(ex.message);
    }
  }
}

如果您不理解上面代码中的任何内容,请随时问我:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69555390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档