编辑
2025-09-28
NodeJs
00

目录

引入 fs 模块
创建目录
异步创建目录
同步创建目录
删除目录
异步删除目录
同步删除目录
读取目录内容
异步读取目录内容
同步读取目录内容
检查目录是否存在
异步检查
同步检查
递归操作目录示例
同步递归创建与删除
异步递归创建与删除
总结

Node.js 提供了许多内置的方法来创建和删除目录。在本文中,我们将详细讲解如何在Node.js中操作目录,并提供一些完整的示例代码。

引入 fs 模块

所有的文件和目录操作都需要使用 fs 模块,这是 Node.js 提供的文件系统模块。首先,引入 fs 模块:

JavaScript
const fs = require('fs'); const path = require('path');

注意: 你可能也会使用 path 模块来进行路径操作,如拼接路径、解析路径等。

创建目录

Node.js 提供了两种主要的方法来创建目录:同步和异步。

异步创建目录

fs.mkdir 方法可以异步创建目录。这是一个非阻塞操作。

参数说明:

  • path: 要创建的目录的路径。
  • options (可选): 用于指定目录权限。默认是 0o777
  • callback: 回调函数,带有一个 err 参数,如果创建失败则包含错误信息。
JavaScript
const fs = require('fs'); const dirPath = 'newDir'; fs.mkdir(dirPath, { recursive: true }, (err) => { if (err) { return console.error(err); } console.log('Directory created successfully!'); });

image.png

recursive: true 确保在创建多级目录时不会抛出错误。如果目录已存在,也不会抛出错误。

同步创建目录

fs.mkdirSync 方法可以同步创建目录。这是一个阻塞操作。

参数说明:

  • path: 要创建的目录的路径。
  • options (可选): 用于指定目录权限。默认是 0o777
JavaScript
const fs = require('fs'); const dirPath = 'newDir'; try { fs.mkdirSync(dirPath, { recursive: true }); console.log('Directory created successfully!'); } catch (err) { console.error(err); }

删除目录

Node.js 也提供了同步和异步的方法来删除目录。

异步删除目录

fs.rmdir 方法可以异步删除目录。这是一个非阻塞操作。

参数说明:

  • path: 要删除的目录的路径。
  • options (可选): 用于指定删除选项,例如 recursive 来递归删除目录。
  • callback: 回调函数,带有一个 err 参数,如果删除失败则包含错误信息。
JavaScript
const fs = require('fs'); const dirPath = 'newDir'; fs.rmdir(dirPath, { recursive: true }, (err) => { if (err) { return console.error(err); } console.log('Directory deleted successfully!'); });

同步删除目录

fs.rmdirSync 方法可以同步删除目录。这是一个阻塞操作。

参数说明:

  • path: 要删除的目录的路径。
  • options (可选): 用于指定删除选项,例如 recursive 来递归删除目录。
JavaScript
const fs = require('fs'); const dirPath = 'newDir'; try { fs.rmdirSync(dirPath, { recursive: true }); console.log('Directory deleted successfully!'); } catch (err) { console.error(err); }

(node:75264) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead

fs.rmdir 现在被fs.rm 替换了。

读取目录内容

fs.readdirfs.readdirSync 方法可以用来读取目录中的文件和子目录。

异步读取目录内容

参数说明:

  • path: 要读取的目录的路径。
  • options (可选): 用于指定编码。默认值为 utf8
  • callback: 回调函数,包含 errfiles 参数,其中 err 是错误对象,files 是目录内容的数组。
JavaScript
const fs = require('fs'); const dirPath = '.'; fs.readdir(dirPath, (err, files) => { if (err) { return console.error(err); } console.log('Directory contents:', files); });

image.png

同步读取目录内容

JavaScript
const fs = require('fs'); const dirPath = '.'; try { const files = fs.readdirSync(dirPath); console.log('Directory contents:', files); } catch (err) { console.error(err); }

检查目录是否存在

使用 fs.access 来检查目录是否存在以及是否有特定权限。

异步检查

参数说明:

  • path: 要检查的目录的路径。
  • mode (可选): 要检查的权限。默认是 fs.constants.F_OK
  • callback: 回调函数,包含一个 err 参数。
JavaScript
const fs = require('fs'); const dirPath = 'newDir'; fs.access(dirPath, fs.constants.F_OK, (err) => { if (err) { console.error('Directory does not exist'); } else { console.log('Directory exists'); } });

image.png

同步检查

JavaScript
const fs = require('fs'); const dirPath = 'newDir'; try { fs.accessSync(dirPath, fs.constants.F_OK); console.log('Directory exists'); } catch (err) { console.error('Directory does not exist'); }

递归操作目录示例

这里给出一个递归创建和删除目录的综合示例。

同步递归创建与删除

JavaScript
const fs = require('fs'); const path = require('path'); const dirPath = path.resolve('parentDir/childDir'); try { fs.mkdirSync(dirPath, { recursive: true }); console.log('Directories created successfully!'); fs.rmSync('parentDir', { recursive: true }); console.log('Directories deleted successfully!'); } catch (err) { console.error(err); }

异步递归创建与删除

JavaScript
const fs = require('fs'); const path = require('path'); const dirPath = path.resolve('parentDir/childDir'); fs.mkdir(dirPath, { recursive: true }, (err) => { if (err) { return console.error(err); } console.log('Directories created successfully!'); fs.rmdir('parentDir', { recursive: true }, (err) => { if (err) { return console.error(err); } console.log('Directories deleted successfully!'); }); });

image.png

总结

通过本文,我们学会了如何在Node.js中创建和删除目录,包括使用同步和异步的方式。现在你应该能够根据需求选择合适的方法来操作文件系统中的目录。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!