gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:57:04 26 4
gpt4 key购买 nike

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

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

最佳答案

编辑 1:@Harald,您应该使用 @ziishaned 上面发布的 del 库。因为它更加干净和可扩展。并使用我的回答来了解它是如何工作的:)


编辑:2(2021 年 12 月 26 日):我不知道有一个名为 fs.rmfs 方法只需一行代码即可完成任务。

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 方法的同步 版本(例如,fs.readdirSync 而不是 fs.readdir) 使我的代码简单。但是,如果您正在编写生产应用程序,那么您应该使用所有 fs 方法的异步版本。我让您在这里阅读文档 Node.js v14.18.1 File System documentation .

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);
}
}
}

如果您对上面的代码有任何不明白的地方,请随时问我:)

关于node.js - 如何使用 Node.js 删除目录中的所有文件和子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69555390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com