返回

使用 Node.js 的 fs 模块轻松创建和删除文件夹

前端

前言

在 Node.js 中,文件系统操作是一个非常常见的功能。Node.js 提供了 fs 模块,它提供了丰富的 API 来操作文件和文件夹。在本篇文章中,我们将介绍如何使用 fs 模块来创建和删除文件夹。

创建文件夹

要创建文件夹,可以使用 fs.mkdir() 方法。该方法接受两个参数:文件夹的路径和一个回调函数。回调函数有两个参数:err 和 dir。如果创建文件夹成功,err 为 null,dir 为创建的文件夹的路径。如果创建文件夹失败,err 为一个错误对象。

以下是一个示例,演示如何使用 fs.mkdir() 方法创建文件夹:

const fs = require('fs');

fs.mkdir('new-folder', (err, dir) => {
  if (err) {
    console.error(err);
  } else {
    console.log('文件夹创建成功!');
  }
});

上述代码中,我们使用 fs.mkdir() 方法创建了一个名为 "new-folder" 的文件夹。如果文件夹创建成功,我们将输出 "文件夹创建成功!"。否则,我们将输出错误信息。

删除文件夹

要删除文件夹,可以使用 fs.rmdir() 方法。该方法接受两个参数:文件夹的路径和一个回调函数。回调函数有两个参数:err 和 dir。如果删除文件夹成功,err 为 null,dir 为删除的文件夹的路径。如果删除文件夹失败,err 为一个错误对象。

以下是一个示例,演示如何使用 fs.rmdir() 方法删除文件夹:

const fs = require('fs');

fs.rmdir('new-folder', (err, dir) => {
  if (err) {
    console.error(err);
  } else {
    console.log('文件夹删除成功!');
  }
});

上述代码中,我们使用 fs.rmdir() 方法删除了一个名为 "new-folder" 的文件夹。如果文件夹删除成功,我们将输出 "文件夹删除成功!"。否则,我们将输出错误信息。

递归创建和删除文件夹

有时候,我们需要创建或删除一个目录树。我们可以使用 fs.mkdirSync() 和 fs.rmdirSync() 方法来实现。这两个方法是 fs.mkdir() 和 fs.rmdir() 的同步版本。

以下是一个示例,演示如何使用 fs.mkdirSync() 方法递归地创建文件夹:

const fs = require('fs');

function mkdirSyncRecursive(dir) {
  try {
    fs.mkdirSync(dir);
  } catch (err) {
    if (err.code !== 'EEXIST') {
      throw err;
    }
  }
}

mkdirSyncRecursive('new-folder/subfolder/subsubfolder');

上述代码中,我们定义了一个 mkdirSyncRecursive() 函数来递归地创建文件夹。该函数使用 fs.mkdirSync() 方法来创建文件夹。如果文件夹已经存在,我们将捕获 "EEXIST" 错误并忽略它。

以下是一个示例,演示如何使用 fs.rmdirSync() 方法递归地删除文件夹:

const fs = require('fs');

function rmdirSyncRecursive(dir) {
  try {
    fs.rmdirSync(dir);
  } catch (err) {
    if (err.code !== 'ENOTEMPTY') {
      throw err;
    }

    const files = fs.readdirSync(dir);
    files.forEach(file => {
      const filePath = path.join(dir, file);
      if (fs.statSync(filePath).isDirectory()) {
        rmdirSyncRecursive(filePath);
      } else {
        fs.unlinkSync(filePath);
      }
    });

    fs.rmdirSync(dir);
  }
}

rmdirSyncRecursive('new-folder');

上述代码中,我们定义了一个 rmdirSyncRecursive() 函数来递归地删除文件夹。该函数使用 fs.rmdirSync() 方法来删除文件夹。如果文件夹不是空文件夹,我们将捕获 "ENOTEMPTY" 错误并忽略它。然后,我们将遍历文件夹中的文件和文件夹,并递归地删除它们。最后,我们将删除文件夹。

总结

在本篇文章中,我们介绍了如何使用 Node.js 的 fs 模块来创建和删除文件夹。我们还学习了如何递归地创建和删除文件夹。这些知识在实际开发中非常有用。