文件与目录操作
学习使用 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模块使用其promisesAPI,以支持异步方法。将源目录(
./example-directory)和目标目录(./backup)定义为常量,以提高代码可读性。对每个
fs方法使用await,以按顺序处理异步操作。通过组合目录路径与文件名,动态构建源文件和目标文件的路径。
使用
fs.mkdir(targetDirectory, { recursive: true })创建目录,其中targetDirectory是目标目录的路径。将逻辑包裹在
try...catch块中,以优雅地处理潜在错误,例如目录缺失或文件访问问题。在每个步骤中记录有意义的进度信息,以便跟踪操作并便于调试。
除了初始目录变量外,避免硬编码路径或文件名,以确保代码的灵活性和可扩展性。