Node.js操作文件:删除与复制的实战代码示例

0 下载量 132 浏览量 更新于2024-08-31 收藏 54KB PDF 举报
本文主要探讨了在Node.js环境中如何进行文件和文件夹的删除与复制操作,提供了具体的示例代码,适用于学习和实践Node.js开发的人员。文章提及的示例已在Windows 10系统上,Node.js v10.16.1环境下测试通过。 在Node.js中处理文件操作,通常需要引入`fs`(文件系统)模块,它是Node.js的核心模块,用于执行基本的文件操作。此外,`path`模块用于处理路径相关的操作,`child_process`模块则用于子进程的创建和管理。文章还提到了`fs-extra`库,它扩展了Node.js的`fs`模块,提供了更多的文件操作功能,如移动、复制、删除文件和目录等。另外,`fsPromises`是`fs`模块的一个实验性API,提供了Promise版本的文件操作函数,使得异步操作更加简洁。 1. 复制文件 - 方式一: 使用`fs.writeFileSync`和`fs.readFileSync`结合。这种方式是同步的,会阻塞其他操作,直到文件复制完成。先读取源文件内容,再写入目标位置。 - 方式二: 使用`fs.copyFileSync`。这也是一个同步方法,直接将源文件复制到目标位置。 - 方式三: 使用`fsPromises.copyFile`。这是异步操作,基于Promise,更符合现代JavaScript的编程习惯。调用后返回一个Promise,成功时 resolve,失败时 reject。 ```javascript const fs = require('fs'); const path = require('path'); const fsPromises = require('fs').promises; function copyFile(copiedPath, resultPath) { copiedPath = path.join(__dirname, copiedPath); resultPath = path.join(__dirname, resultPath); try { // 方式一 // fs.writeFileSync(resultPath, fs.readFileSync(copiedPath)); // 方式二 // fs.copyFileSync(copiedPath, resultPath); console.log('success'); } catch (error) { console.log(error); } // 方式三 fsPromises.copyFile(copiedPath, resultPath) .then(() => console.log('success')) .catch((err) => console.log(err)); } ``` 2. 删除文件 Node.js的`fs`模块同样提供了删除文件的方法。`fs.unlinkSync`是同步的,`fs.unlink`则是异步的。`fsPromises.unlink`是Promise版本的异步删除。 ```javascript function deleteFile(filePath) { filePath = path.join(__dirname, filePath); try { // 同步删除 // fs.unlinkSync(filePath); console.log('success'); } catch (error) { console.log(error); } // 异步删除 // fs.unlink(filePath, (err) => { // if (err) console.error(err); // else console.log('success'); // }); // Promise删除 fsPromises.unlink(filePath) .then(() => console.log('success')) .catch((err) => console.log(err)); } ``` 对于复制或删除文件夹,可以使用`fs-extra`库中的`copy`和`remove`方法,它们提供了递归复制和删除整个目录的功能。 Node.js提供了多种方式处理文件和文件夹的操作,包括同步和异步,可以根据项目需求选择合适的方法。在实际开发中,考虑到性能和错误处理,通常会倾向于使用异步操作,并结合Promise或async/await来管理异步流程。