Node.js fs.rmdir() 方法
fs.rmdir() 方法用于删除给定路径的目录。它也可以递归地用于删除嵌套目录。
句法:
fs.rmdir( path, options, callback )
参数:此方法接受三个参数,如上所述,如下所述:
- path:它保存必须删除的目录的路径。它可以是字符串、缓冲区或 URL。
- options:它是一个对象,可用于指定将影响操作的可选参数。它具有三个可选参数:
- recursive:它是一个布尔值,指定是否执行递归目录删除。在这种模式下,如果没有找到指定的路径并且操作失败时重试,则不会报告错误。默认值为假。
- maxRetries:它是一个整数值,它指定 Node.js 在由于任何错误而失败时尝试执行操作的次数。这些操作在给定的重试延迟之后执行。如果递归选项未设置为 true,则忽略此选项。默认值为 0。
- retryDelay:它是一个整数值,指定在重试操作之前等待的时间(以毫秒为单位)。如果递归选项未设置为 true,则忽略此选项。默认值为 100 毫秒。
- callback:方法执行时调用的函数。
- err:如果操作失败将抛出的错误。
下面的示例说明了 Node.js 中的fs.rmdir() 方法:
示例 1:本示例使用 fs.rmdir() 方法删除目录。
Javascript
// Node.js program to demonstrate the
// fs.rmdir() method
// Import the filesystem module
const fs = require('fs');
// Get the current filenames
// in the directory
getCurrentFilenames();
fs.rmdir("directory_one", () => {
console.log("Folder Deleted!");
// Get the current filenames
// in the directory to verify
getCurrentFilenames();
});
// Function to get current filenames
// in directory
function getCurrentFilenames() {
console.log("\nCurrent filenames:");
fs.readdirSync(__dirname).forEach(file => {
console.log(file);
});
console.log("\n");
}
Javascript
// Node.js program to demonstrate the
// fs.rmdir() method
// Import the filesystem module
const fs = require('fs');
// Get the current filenames
// in the directory
getCurrentFilenames();
// Trying to delete nested directories
// without the recursive parameter
fs.rmdir("directory_one", {
recursive: false,
}, (error) => {
if (error) {
console.log(error);
}
else {
console.log("Non Recursive: Directories Deleted!");
}
});
// Using the recursive option to delete
// multiple directories that are nested
fs.rmdir("directory_one", {
recursive: true,
}, (error) => {
if (error) {
console.log(error);
}
else {
console.log("Recursive: Directories Deleted!");
// Get the current filenames
// in the directory to verify
getCurrentFilenames();
}
});
// Function to get current filenames
// in directory
function getCurrentFilenames() {
console.log("\nCurrent filenames:");
fs.readdirSync(__dirname).forEach(file => {
console.log(file);
});
console.log("\n");
}
输出:
Current filenames:
directory_one
index.js
package.json
Folder Deleted!
Current filenames:
index.js
package.json
示例 2:此示例使用 fs.rmdir() 方法和递归参数来删除嵌套目录。
Javascript
// Node.js program to demonstrate the
// fs.rmdir() method
// Import the filesystem module
const fs = require('fs');
// Get the current filenames
// in the directory
getCurrentFilenames();
// Trying to delete nested directories
// without the recursive parameter
fs.rmdir("directory_one", {
recursive: false,
}, (error) => {
if (error) {
console.log(error);
}
else {
console.log("Non Recursive: Directories Deleted!");
}
});
// Using the recursive option to delete
// multiple directories that are nested
fs.rmdir("directory_one", {
recursive: true,
}, (error) => {
if (error) {
console.log(error);
}
else {
console.log("Recursive: Directories Deleted!");
// Get the current filenames
// in the directory to verify
getCurrentFilenames();
}
});
// Function to get current filenames
// in directory
function getCurrentFilenames() {
console.log("\nCurrent filenames:");
fs.readdirSync(__dirname).forEach(file => {
console.log(file);
});
console.log("\n");
}
输出:
Current filenames:
directory_one
index.js
package.json
[Error: ENOTEMPTY: directory not empty,
rmdir 'G:\tutorials\nodejs-fs-rmdir\directory_one'] {
errno: -4051,
code: 'ENOTEMPTY',
syscall: 'rmdir',
path: 'G:\\tutorials\\nodejs-fs-rmdir\\directory_one'
}
Recursive: Directories Deleted!
Current filenames:
index.js
package.json
参考: https://nodejs.org/api/fs.html#fs_fs_rmdir_path_options_callback