企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] >[success] # 删除文件或目录的api | 操作 | 方法 | 异步/同步 | | --- | --- | --- | | 删除文件 | `fs.unlink()` | 异步 | | 删除文件 | `fs.unlinkSync()` | 同步 | | 删除空目录 | `fs.rmdir()` | 异步 | | 删除空目录 | `fs.rmdirSync()` | 同步 | | 删除文件或目录 | `fs.rm()` | 异步 | | 删除文件或目录 | `fs.rmSync()` | 同步 | >[danger] ### node fs.unlink(path, callback)删除文件 `fs.unlink(path, callback)`是 Node.js 中用于删除文件的方法。它是一个异步方法,接受一个文件路径作为参数,用于删除该路径所表示的文件。 参数说明: * `path`:一个字符串或`Buffer`对象,表示要删除的文件的路径。也可以使用`URL`对象。 * `callback`:一个回调函数,用于处理删除文件的结果。回调函数接受一个可能发生的错误对象作为参数。如果删除成功,该参数将为`null`。 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string \| Buffer \| URL | 要删除的文件路径 | | callback | function | 删除操作完成后的回调函数,接受一个错误对象作为参数。如果删除成功,该参数将为`null`。 | >[danger] ##### 案例 ~~~ const fs = require('fs') fs.unlink('test.txt', (err) => { if (err) throw err // 不存在的文件会报错 console.log('successfully deleted test.txt') }) ~~~ * 批量删除多个文件 ~~~ const fs = require('fs'); const files = ['/path/to/file1.txt', '/path/to/file2.txt', '/path/to/file3.txt']; for (const file of files) { fs.unlink(file, (err) => { if (err) throw err; console.log(`${file} 已删除`); }); } ~~~ >[danger] ### fsPromises.unlink(path) 1. `fsPromises.unlink(path)`是 Node.js 中用于删除文件的 API 之一,它是`fs`模块的 Promise 版本,用于删除指定路径的文件。该方法返回一个 Promise 对象,因此可以使用`async/await`或 Promise 的链式调用来处理删除文件的结果 >[danger] ##### api 参数说明: * `path`:一个字符串或`Buffer`对象,表示要删除的文件的路径。也可以使用`URL`对象。 >[danger] ##### 案例 ~~~javascript const fsPromises = require('fs').promises; // 删除文件 fsPromises.unlink('/path/to/file.txt') .then(() => { console.log('文件已删除'); }) .catch((err) => { console.error(`删除文件失败:${err}`); }); ~~~ * 批量删除 ~~~ const fs = require('fs').promises; async function deleteFiles() { const files = ['/path/to/file1.txt', '/path/to/file2.txt', '/path/to/file3.txt']; for (const file of files) { try { await fs.unlink(file); console.log(`${file} 已删除`); } catch (err) { console.error(`删除 ${file} 失败:${err}`); } } } deleteFiles(); ~~~ >[danger] ### fs.unlinkSync(path) 1. `fs.unlinkSync(path)`是 Node.js 中用于同步删除文件的方法 >[danger] ##### api 参数说明: * `path`:一个字符串或`Buffer`对象,表示要删除的文件的路径。也可以使用`URL`对象。 >[danger] ##### 案例 ~~~ const fs = require('fs') try { // 删除文件 fs.unlinkSync('test212.txt') console.log('文件已删除') } catch (err) {} ~~~ >[danger] ### fs.rmdir(path[, options], callback) 1. `fs.rmdir()`是 Node.js 中用于删除目录的方法之一,它用于删除指定路径的目录。该方法是一个异步方法,需要使用回调函数来处理删除目录的结果。 2. **只能删除空文件夹** >[danger] ##### api 1. `maxRetries`和`retryDelay`选项只有在`recursive`选项为`true`时才会生效。另外,建议在使用`fs.rmdir()`方法时,尽量使用 Promise 或 async/await 的方式处理结果,而不是回调函数。 | 参数名 | 类型 | 描述 | | --- | --- | --- | | `path` | `string`或`Buffer`或`URL` | 要删除的目录的路径。 | | `options` | `Object` | 可选的选项参数对象。包括以下属性: | | `options.maxRetries` | `integer` | 如果遇到`EBUSY`、`EMFILE`、`ENFILE`、`ENOTEMPTY`或`EPERM`错误,Node.js 将在每次尝试时以`retryDelay`毫秒的线性退避等待时间重试该操作。此选项表示重试次数。如果`recursive`选项不为`true`,则忽略此选项。默认为`0`。 | | `options.recursive` | `boolean` | 如果为`true`,则执行递归目录删除。在递归模式下,操作将在失败时重试。该选项在 Node.js 15.0.0 版本中已经弃用。默认为`false`。 | | `options.retryDelay` | `integer` | 重试之间等待的时间(以毫秒为单位)。如果`recursive`选项不为`true`,则忽略此选项。默认为`100`。 | | `callback` | `Function` | 回调函数,用于处理删除操作的结果。回调函数有一个参数`err`,表示删除操作的错误信息。如果删除成功,则`err`为`null`。 | >[danger] ##### 使用 ~~~ const fs = require('fs') fs.rmdir('a', (err) => { if (err) throw err }) ~~~ ~~~ const fs = require('fs') // 递归删除被弃用了 需要使用fs.rm fs.rmdir('a', { recursive: true }, (err) => { if (err) throw err }) ~~~ >[danger] ### fsPromises.rmdir(path[, options]) 1. `fsPromises.rmdir(path[, options])`是 Node.js 的文件系统模块(`fs`)中的一个异步函数,用于删除指定路径下的目录。 2. 该函数返回一个 Promise,当删除操作完成时,该 Promise 将被解析为`undefined`。如果删除操作失败,则 Promise 将被拒绝,并传递一个错误对象作为拒绝原因。 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string / Buffer / URL | 要删除的目录的路径。 | | options | object | 可选的选项对象,可以包含以下属性: | | options.maxRetries | integer | 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 错误,Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。 此选项表示重试次数。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 0。 | | options.recursive | boolean | 如果为 true,则执行递归目录删除。 在递归模式下,操作将在失败时重试。 默认值: false。已弃用。 | | options.retryDelay | integer | 重试之间等待的时间(以毫秒为单位)。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 100。 | >[danger] ##### 案例 ~~~ const fsPromises = require('fs/promises'); // 删除目录 { recursive: true } 弃用 fsPromises.rmdir('/path/to/directory') .then(() => { console.log('目录删除成功!'); }) .catch((err) => { console.error('目录删除失败:', err); }); ~~~ >[danger] ### fs.rmdirSync(path[, options]) 1. `fs.rmdirSync()`是 Node.js 中的一个同步方法,用于删除指定路径的空目录。 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string \| Buffer \| URL | 要删除的目录的路径 | | options | Object | 可选的选项对象 | | maxRetries | integer | 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 错误,Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。此选项表示重试次数。如果 recursive 选项不为 true,则忽略此选项。默认值: 0。 | | recursive | boolean | 如果为 true,则执行递归目录删除。在递归模式下,操作将在失败时重试。默认值: false。已弃用。 | | retryDelay | integer | 重试之间等待的时间(以毫秒为单位)。如果 recursive 选项不为 true,则忽略此选项。默认值: 100。 | | 返回值 | undefined | 同步删除操作的返回值。 | >[danger] ##### 案例 ~~~ const fs = require('fs'); try { // 同步删除目录 fs.rmdirSync('a'); console.log(`目录 ${dirPath} 删除成功!`); } catch (err) { console.error(`目录 ${dirPath} 删除失败:`, err); } ~~~ >[danger] ### fs.rm(path[, options], callback) -- 文件目录都能删除 1. `fs.rm()`是 Node.js v14 引入的一个异步方法,用于删除文件或目录。**它可以删除指定路径的文件或空目录,也可以递归删除目录及其子目录中的所有文件和目录**。 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string | Buffer | URL | 要删除的文件或目录的路径 | | options | Object | 可选的选项对象 | | force | boolean | 当为`true`时,如果`path`不存在,则异常将被忽略。默认值为`false`。 | | maxRetries | integer | 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 错误,Node.js 将在每次尝试时以`retryDelay`毫秒的线性退避等待时间重试该操作。此选项表示重试次数。如果`recursive`选项不为`true`,则忽略此选项。默认值为`0`。 | | recursive | boolean | 如果为`true`,则执行递归删除。在递归模式下,操作将在失败时重试。默认值为`false`。 | | retryDelay | integer | 重试之间等待的时间(以毫秒为单位)。如果`recursive`选项不为`true`,则忽略此选项。默认值为`100`。 | | callback | Function | 在删除操作完成后被调用的回调函数,接受一个错误对象作为其第一个参数。 | | callback err | Error | 如果删除操作成功,则该参数为`null`,否则为一个包含错误信息的`Error`对象。 | >[danger] ##### 案例 ~~~ const fs = require('fs') // 可以删除有内容的文件夹 并且可以递归删除 下面例子会删除 a 文件夹下的所有文件 fs.rm('a', { recursive: true }, (err) => { if (err) throw err }) ~~~ >[danger] ### fsPromises.rm(path[, options]) 1. `fsPromises.rm()`是Node.js中的一个异步方法,用于删除指定路径的文件或文件夹。 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string / Buffer / URL | 要删除的文件或文件夹的路径,可以是相对路径或绝对路径。 | | options | Object | 可选的对象,用于指定删除操作的选项。 | | options.force | boolean | 当为 true 时,如果 path 不存在,则异常将被忽略。 默认值: false。 | | options.maxRetries | integer | 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 错误,Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。 此选项表示重试次数。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 0。 | | options.recursive | boolean | 如果为 true,则执行递归目录删除。 在递归模式下,操作将在失败时重试。 默认值: false。 | | options.retryDelay | integer | 重试之间等待的时间(以毫秒为单位)。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 100。 | | 返回值 | Promise | Promise对象,成功时将使用`undefined`履行,失败时将使用一个`Error`对象拒绝。 | >[danger] ##### 案例 ~~~ const fsPromises = require('fs/promises'); // 删除 example 目录及其子目录和文件 fsPromises.rm('example', { recursive: true }) .then(() => { console.log('example目录删除成功'); }) .catch((err) => { console.error('example目录删除失败', err); }); ~~~ >[danger] ### fs.rmSync(path[, options]) 1. `fs.rmSync()`是Node.js中的一个同步方法,用于删除指定路径的文件或文件夹 >[danger] ##### api | 参数 | 类型 | 描述 | | --- | --- | --- | | path | string / Buffer / URL | 要删除的文件或文件夹的路径,可以是相对路径或绝对路径。 | | options | Object | 可选的对象,用于指定删除操作的选项。 | | options.force | boolean | 当为 true 时,如果 path 不存在,则异常将被忽略。 默认值: false。 | | options.maxRetries | integer | 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 错误,Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。 此选项表示重试次数。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 0。 | | options.recursive | boolean | 如果为 true,则执行递归目录删除。 在递归模式下,操作将在失败时重试。 默认值: false。 | | options.retryDelay | integer | 重试之间等待的时间(以毫秒为单位)。 如果 recursive 选项不为 | >[danger] ##### 案例 ~~~ const fs = require('fs') // 可以删除有内容的文件夹 并且可以递归删除 下面例子 try { fs.rmSync('a', { recursive: true }) } catch (e) { console.log(e) } ~~~