一、是什么
fs(filesystem),该模块提供本地文件的读写能力,基本上是POSIX
文件操作命令的简单包装
可以说,所有与文件的操作都是通过fs
核心模块实现
导入模块如下:
const fs = require('fs')
这个模块对所有文件系统操作提供异步(不具有sync
后缀)和同步(具有sync
后缀)两种操作方式而供开发者选择
二、文件知识
在计算机中有关于文件的知识:
- 权限位mode
- 标识位flag
- 文件描述为fd
权限位mode
针对文件所有者、文件所属组、其他用户进行权限分配,其中类型又分为读、写和执行,具备权限位4、2、1,不具备权限为0
如在linux
查看文件权限位:
drwxr-xr-x 1 PandaShen 197121 0 Jun 28 14:41 core
-rw-r--r-- 1 PandaShen 197121 293 Jun 23 17:44 index.md
在开头前十位中,d
为文件夹。-
为文件,后九位就代表当前用户、用户所属组和其他用户的权限位,按每三位划分,分别代表读(r)、写(w)和执行(x),-代表没有当前位对应的权限
标识位
标识位代表着对文件的操作方式,如可读、可写、既可读又可写,如下表所示:
符号 | 含义 |
---|---|
r | 读取文件,如果文件不存在则抛出异常。 |
r+ | 读取并写入文件,如果文件不存在则抛出异常。 |
rs | 读取并写入文件,指示操作系统绕开本地文件系统缓存。 |
w | 写入文件,文件不存在会被创建,存在则清空后写入。 |
wx | 写入文件,排它方式打开。 |
w+ | 读取并写入文件,文件不存在则创建文件,存在则清空后写入。 |
wx+ | 和 w+ 类似,排他方式打开。 |
a | 追加写入,文件不存在则创建文件。 |
ax | 与 a 类似,排他方式打开。 |
a+ | 读取并追加写入,不存在则创建。 |
ax+ | 与 a+ 类似,排他方式打开 |
文件描述为fd
操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件
window
系统使用了一个不同但概念类似的机制来追踪资源,为方便用户,NodeJs
抽象了不同操作系统间的差异,为所有打开的文件分配了数值的文件描述符
在NodeJs
中,每操作一个文件,文件描述符是递增的,文件描述符一般从3
开始,因为前面有0
、1
、2
三个比较特殊的描述符,分别代表process.stdin
(标准输入)、process.stdout
(标准输出)、process.stderr
(错误输出)
三、方法
下面针对fs
模块常用的方法进行展开:
- 文件读取
- 文件写入
- 文件追加写入
- 文件拷贝
- 创建目录
文件读取
fs.readFileSync
同步读取,参数如下:
- 第一个参数为读取文件的路径或文件描述符
- 第二个参数为option,默认值为null,其中有encoding