Node.js操作文件:删除与复制的实战代码示例
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来管理异步流程。
2019-08-09 上传
2021-09-30 上传
点击了解资源详情
2021-07-09 上传
2021-02-23 上传
2020-10-15 上传
2020-10-17 上传
2021-03-31 上传
点击了解资源详情
weixin_38558655
- 粉丝: 4
- 资源: 957
最新资源
- Chrome ESLint扩展:实时运行ESLint于网页脚本
- 基于 Webhook 的 redux 预处理器实现教程
- 探索国际CMS内容管理系统v1.1的新功能与应用
- 在Heroku上快速部署Directus平台的指南
- Folks Who Code官网:打造安全友好的开源环境
- React测试专用:上下文提供者组件实现指南
- RabbitMQ利用eLevelDB后端实现高效消息索引
- JavaScript双向对象引用的极简实现教程
- Bazel 0.18.1版本发布,Windows平台构建工具优化
- electron-notification-desktop:电子应用桌面通知解决方案
- 天津理工操作系统实验报告:进程与存储器管理
- 掌握webpack动态热模块替换的实现技巧
- 恶意软件ep_kaput: Etherpad插件系统破坏者
- Java实现Opus音频解码器jopus库的应用与介绍
- QString库:C语言中的高效动态字符串处理
- 微信小程序图像识别与AI功能实现源码