Logo
Section 1 / 6

文件与目录操作

学习使用 Node.js 的 fs 模块处理文件系统操作,包括目录列表、元数据访问、文件夹管理以及错误处理。

导入

文件与目录操作

学习使用 Node.js 的 fs 模块处理文件系统操作,包括目录列表、元数据访问、文件夹管理以及错误处理。

Promises:快速回顾

回顾一下,Promise 为 JavaScript 中的异步任务提供了一种结构化的方式。相比回调函数,Promise 能够实现操作链式调用、有效管理错误,并编写出更易维护的代码。通过使用 .then() 处理结果,.catch() 处理错误,Promise 简化了复杂异步操作的流程。

No configuration found for ID: d9dc91f380c1f1c3fb2d785ca196475752f03abbb5fe977b7d979d2eb360005b

No configuration found for ID: 1cb0c70c4f5d32a08bb2516280d03e8e199a39cd1fd7ab9542fff20959deb423

No configuration found for ID: 2f5a5143624e1d9dc5aa47eea27350896720e4d608ffc926ccbded14f46c9cee

No configuration found for ID: db777be1c61098605e43f97f7fc7ada3c567dcfc55750d212b899be3e356685b

No configuration found for ID: 9920161b97e02694be50676a921af0a9c053d03bc1d5cba39afd4703412ac50c

显示解决方案

以下为 directoryManager.js 的代码:

解决方案:通过列出文件并将它们复制到新目录来备份文件

1const fs = require('fs').promises; 2 3async function manageDirectoryBackup() { 4 try { 5 const directory = './example-directory'; 6 const backup = './backup'; 7 8 // Step 1: 列出目录中的文件 9 const files = await fs.readdir(directory); 10 console.log(`Files in ${directory}:`, files); 11 12 // Step 2: 创建备份目录 13 await fs.mkdir(backup, { recursive: true }); 14 console.log(`Backup directory created: ${backup}`); 15 16 // Step 3: 将文件复制到备份目录 17 for (const file of files) { 18 const sourcePath = `${directory}/${file}`; 19 const destinationPath = `${backup}/${file}`; 20 await fs.copyFile(sourcePath, destinationPath); 21 console.log(`Copied ${file} to ${backup}`); 22 } 23 } catch (err) { 24 console.error("Error managing backup:", err.message); 25 } 26} 27 28manageDirectoryBackup();
  • 第 1–3 行: 导入 fs 模块并声明 manageDirectoryBackup 函数。

  • 第 9–10 行: 使用 fs.readdir 列出 example-directory 中的文件。

  • 第 13–14 行: 使用 fs.mkdir 创建新的 backup 目录,并启用 { recursive: true } 选项,以在目录不存在时自动创建其父级目录。

  • 第 17–22 行: 遍历文件列表,使用 fs.copyFile 将每个文件复制到 backup 文件夹。

  • 第 23–25 行: 捕获并记录过程中遇到的任何错误。

  • 第 1–3 行: 导入 fs 模块并声明 manageDirectoryBackup 函数。

  • 第 9–10 行: 使用 fs.readdir 列出 example-directory 中的文件。

  • 第 13–14 行: 使用 fs.mkdir 创建新的 backup 目录,并使用 { recursive: true } 选项,以便在目录不存在时自动创建其父级目录。

  • 第 17–22 行: 遍历文件列表,使用 fs.copyFile 将每个文件复制到 backup 文件夹。

  • 第 23–25 行: 捕获并记录过程中遇到的任何错误。

显示提示

  • 确保导入的 fs 模块使用其 promises API,以支持异步方法。

  • 将源目录(./example-directory)和目标目录(./backup)定义为常量,以提高代码可读性。

  • 对每个 fs 方法使用 await,以按顺序处理异步操作。

  • 通过组合目录路径与文件名,动态构建源文件和目标文件的路径。

  • 使用 fs.mkdir(targetDirectory, { recursive: true }) 创建目录,其中 targetDirectory 是目标目录的路径。

  • 将逻辑包裹在 try...catch 块中,以优雅地处理潜在错误,例如目录缺失或文件访问问题。

  • 在每个步骤中记录有意义的进度信息,以便跟踪操作并便于调试。

  • 除了初始目录变量外,避免硬编码路径或文件名,以确保代码的灵活性和可扩展性。

附录

使用 Path、OS 和 Util 模块