fs模块
fs概述
-在 NodeJS 中,所有与文件操作都是通过 fs
核心模块来实现的,包括文件目录的创建、删除、查询以及文件的读取和写入,在 fs
模块中,所有的方法都分为同步和异步两种实现,具有 sync
后缀的方法为同步方法,不具有 sync
后缀的方法为异步方法;
- 文件描述符fd
- 操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件,Window 系统使用了一个不同但概念类似的机制来追踪资源,为方便用户,NodeJS 抽象了不同操作系统间的差异,为所有打开的文件分配了数值的文件描述符。
- 在 NodeJS 中,每操作一个文件,文件描述符是递增的,文件描述符一般从 3
开始,因为前面有 0
、1
、2
三个比较特殊的描述符,分别代表 process.stdin
(标准输入)、process.stdout
(标准输出)和 process.stderr
(错误输出)
- 标识符flag
- NodeJS 中,标识位代表着对文件的操作方式,如可读、可写、即可读又可写等等,在下面来表示文件操作的标识位和其对应的含义
- r 读取文件,如果文件不存在则抛出异常。
- r+ 读取并写入文件,如果文件不存在则抛出异常。
- rs 读取并写入文件,指示操作系统绕开本地文件系统缓存。
- w 写入文件,文件不存在会被创建,存在则清空后写入。
- wx 写入文件,排它方式打开。
- w+ 读取并写入文件,文件不存在则创建文件,存在则清空后写入。
- wx+ 和 w+
类似,排他方式打开。
- a 追加写入,文件不存在则创建文件。
- ax 与 a
类似,排他方式打开。
- a+ 读取并追加写入,不存在则创建。
- ax+ 与 a+
类似,排他方式打开。
-
文件读取
-
同步读取文件readFileSync,有两个参数
-
第一个参数为读取文件的路径或文件描述符;
-
第二个参数为 options,默认值为 null,其中有 encoding(编码,默认为 null)和 flag(标识位,默认为 r),也可直接传入 encoding;
-
返回值为文件的内容,如果没有
encoding
,返回的文件内容为 Buffer,如果有按照传入的编码解析。 -
例:
const fs = require("fs"); let resultB = fs.readFileSync("./a.txt"); let resultD = fs.readFileSync("./a.txt", "utf8"); // 当读取的值为Buffer的时候,可以调用其toString()的方法,也可以将其转为正常的数据格式 // console.log(resultB.toString()); console.log(resultB); // <Buffer 68 65 6c 6c 6f 20 46 53> console.log(resultD); // Hello FS
-
-
异步读取readFile, 有三个参数
-
异步读取方法与
readFileSync
的前两个参数相同,最后一个参数为回调函数,函数内有两个参数err
(错误)和data
(数据),该方法没有返回值,回调函数在读取文件成功后执行,第二个参数也可以不传,通过toString()方法解析返回的数据 -
例:
const fs = require("fs"); fs.readFile("a.txt", "utf8", (err, data) => { console.log(err); // null console.log(data); // Hello FS });
-
-
网友评论