Node.js fs模块:异步与同步文件操作
80 浏览量
更新于2024-08-29
收藏 97KB PDF 举报
"Node核心模块之fs模块01"
在Node.js中,`fs`模块是核心模块之一,它提供了丰富的文件系统操作接口,允许开发者进行读取、写入、创建、删除、移动文件以及管理目录等操作。这个模块的设计灵感来源于UNIX(POSIX)标准,因此,对于熟悉这类系统的开发者来说,上手会更加容易。
fs模块中的方法分为同步(synchronous)和异步(asynchronous)两种。同步方法会在调用后立即阻塞代码执行,直到该方法完成其操作;而异步方法则不会阻塞,它们会立即返回,并在操作完成后通过回调函数通知结果。异步方法通常推荐用于性能敏感的应用,因为它们不会阻止其他任务的执行,这对于高流量的服务器尤其重要,可以避免因长时间读写操作导致的程序卡顿。
**异步读取文件:**
fs.readFile() 是异步读取文件内容的函数。它的第一个参数是文件路径,第二个参数是回调函数,回调函数有两个参数,第一个参数 `err` 用于接收可能出现的错误,第二个参数 `data` 是包含文件内容的Buffer对象。例如:
```javascript
const fs = require('fs');
fs.readFile('./file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
```
**同步读取文件:**
fs.readFileSync() 是同步版本的读取文件方法,它会阻塞代码执行直到读取完成。此方法直接返回一个Buffer对象,如果发生错误,将抛出异常。例如:
```javascript
const fs = require('fs');
try {
const data = fs.readFileSync('./file.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}
```
**写入文件:**
fs.writeFile() 和 fs.writeFileSync() 分别是异步和同步的写入文件方法。它们接受文件名、数据和可选的编码作为参数,然后将数据写入指定文件。写入完成后,异步方法不会返回任何值,而同步方法会抛出错误或直接返回。
**追加文件内容:**
fs.appendFile() 和 fs.appendFileSync() 可以在现有文件的末尾添加新的内容,而不是覆盖原有的文件内容。
**创建和删除文件:**
fs.writeFile() 实际上也可以用于创建新文件,如果文件已存在,内容会被替换。另外,fs.unlink() 和 fs.unlinkSync() 用于删除文件,而 fs.mkdir() 和 fs.mkdirSync() 用于创建目录。
**重命名和移动文件:**
fs.rename() 和 fs.renameSync() 用于重命名或移动文件,而 fs.rmdir() 和 fs.rmdirSync() 用于删除空目录,fs.rm() 和 fs.rmSync() 在Node.js 14及以上版本引入,可以删除文件或目录(包括非空目录)。
**文件系统监控:**
fs.watch() 方法可以监听文件或目录的变化,当文件或目录发生改变时,会触发回调函数。
以上只是`fs`模块中部分常用方法的简介,实际上,`fs`模块还提供了许多其他功能,如读写流、文件权限管理等。在实际开发中,根据具体需求选择合适的方法,合理利用同步和异步操作,可以高效地处理文件系统任务。
2021-11-10 上传
2021-02-12 上传
2023-07-14 上传
2024-02-19 上传
2023-05-18 上传
2023-05-25 上传
2023-07-14 上传
2024-10-13 上传
weixin_38664989
- 粉丝: 4
- 资源: 906
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明