Node.js fs模块详解:文件系统操作实例
86 浏览量
更新于2024-08-31
收藏 69KB PDF 举报
"本文详细介绍了如何在Node.js中使用fs文件系统模块进行文件和目录的操作,包括文件的读取和写入。"
在Node.js中,fs(文件系统)模块是核心模块之一,它允许开发者执行基本的文件系统操作,如读取、写入、创建、删除文件和目录。fs模块提供了异步和同步两种方法,同步方法通常带有sync后缀,如`readFileSync`和`writeFileSync`。
1. 文件的整个读取
- `fs.readFile()` 是异步读取文件的方法,接收两个参数:文件路径和回调函数。回调函数有两个参数,错误对象(err)和读取到的数据(data)。如果不指定编码,`data`会是一个Buffer对象;若指定编码,如'utf8',则返回字符串。
- `fs.readFileSync()` 是同步版本,同样接收文件路径作为参数,如果指定了编码,它将返回字符串;否则返回Buffer。
2. 往文件写入数据
- `fs.writeFile()` 异步写入文件,接收三个参数:文件路径、要写入的数据和回调函数。回调函数只包含错误对象(err)。写入配置可设置编码、文件权限和文件系统标志。
- `fs.writeFileSync()` 同步写入文件,其用法与`writeFile`类似,但不会立即返回,而是等待写入完成。
3. 文件追加
- 如果你想在文件末尾添加内容,可以使用`fs.appendFile()`异步方法,或者其同步版本`fs.appendFileSync()`。
4. 文件和目录的创建与删除
- `fs.mkdir()` 创建目录,异步版本,可以使用`fs.mkdirSync()`同步创建。
- `fs.rmdir()` 删除空目录,异步版本,同步版本是`fs.rmdirSync()`。
- `fs.unlink()` 删除文件,异步,同步是`fs.unlinkSync()`。
- 若要删除非空目录,可以使用`fs.rm()`(Node.js 14.14.0+),同步版本`fs.rmSync()`。
5. 文件和目录的属性检查
- `fs.stat()` 异步获取文件或目录的状态信息,如大小、创建时间等。同步版本是`fs.statSync()`。
- `fs.access()` 可用于检查文件或目录是否存在,以及是否可读、可写等权限。异步和同步版本分别命名为`fs.access()`和`fs.accessSync()`。
6. 文件和目录的重命名和移动
- `fs.rename()` 异步重命名或移动文件,同步版本是`fs.renameSync()`。
- `fs.copyFile()` 用于复制文件,异步和同步版本分别是`fs.copyFile()`和`fs.copyFileSync()`。
7. 文件流
- 除了以上方法,fs模块还支持文件流API,如`fs.createReadStream()`和`fs.createWriteStream()`, 这些方法允许以流的形式处理文件数据,特别适合大文件操作。
在实际开发中,推荐使用异步方法,因为它们不会阻塞事件循环,有助于保持应用的响应性。但在某些情况下,如在初始化脚本中,同步方法可能是更合适的选择。在操作文件时,确保正确处理错误,并注意文件锁和并发控制,以避免数据冲突。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-12-23 上传
2020-10-16 上传
2021-01-01 上传
2020-12-17 上传
2020-10-15 上传
2020-11-20 上传
weixin_38722329
- 粉丝: 12
- 资源: 960
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建