readFile
:异步读取文件readFileSync
:同步读取文件fsPromises.readFile
:promise的写法需要注意的是,前三个方法,如果不指定
编码(options.encoding)
则数据作为 < Buffer > 返回,否则数据为字符串
函数参数
fs.readFile(path[, options], callback)
path:< string > | < Buffer > | < URL > | < integger > 文件名或文件描述符
options:< Object > | < string >
edcoding:< string > | < null > 默认值 null
flag:< string > 可以填写的值,在下面,默认值是'r'
signal:< AbortSignal > 允许中止正在进行的读取文件
'a'
: 打开文件进行追加。 如果文件不存在,则创建该文件。‘ax’: 类似于 ‘a’ 但如果路径存在则失败。'a+'
: 打开文件进行读取和追加。 如果文件不存在,则创建该文件。'ax+'
: 类似于 ‘a+’ 但如果路径存在则失败。'as'
: 以同步模式打开文件进行追加。 如果文件不存在,则创建该文件。'as+'
: 以同步模式打开文件进行读取和追加。 如果文件不存在,则创建该文件。'r'
: 打开文件进行读取。 如果文件不存在,则会发生异常。'r+'
: 打开文件进行读写。 如果文件不存在,则会发生异常。'rs+'
: 以同步模式打开文件进行读写。 指示操作系统绕过本地文件系统缓存。(这主要用于在 NFS 挂载上打开文件,因为它允许跳过可能过时的本地缓存。 它对 I/O 性能有非常实际的影响,因此除非需要,否则不建议使用此标志。这不会将 fs.open() 或 fsPromises.open() 变成同步阻塞调用。 如果需要同步操作,应该使用类似 fs.openSync() 的东西。)'w'
: 打开文件进行写入。 创建(如果它不存在)或截断(如果它存在)该文件。'wx'
: 类似于 ‘w’ 但如果路径存在则失败。'w+'
: 打开文件进行读写。 创建(如果它不存在)或截断(如果它存在)该文件。'wx+'
: 类似于 ‘w+’ 但如果路径存在则失败。const fs = require("fs");
// 1、readFile
fs.readFile("./歌词.txt", {}, (err, data) => {
// 如果文件中是:早上好,这三个字,则会输出下面这一行
console.log(data); // <Buffer e6 97 a9 e4 b8 8a e5 a5 bd> ;
});
console.log("下面代码");
如果在第二个参数中,加上
encoding: "utf-8"
,则会直接输出 原始内容
fs.readFile(
"./歌词.txt",
{
encoding: "utf-8",
},
(err, data) => {
// 如果文件中是:早上好,这三个字,则会输出下面这一行
console.log(data); // <Buffer e6 97 a9 e4 b8 8a e5 a5 bd> ;
// 如果第二个参数,加上了 encoding: "utf-8", 则会直接输出对应的原始文字
}
);
函数参数
fs.readFileSync(path[, options])
path:< string > | < Buffer > | < URL > | < integger > 文件名或文件描述符
options:< Object > | < string >
edcoding:< string > | < null > 默认值 null
flag:< string > 可以填写的值,在下面,默认值是'r'
const file = fs.readFileSync("./歌词.txt");
console.log(file);// 输出内容:<Buffer e6 97 a9 e4 b8 8a e5 a5 bd>
const file = fs.readFileSync("./歌词.txt", { encoding: "utf-8" });
console.log(file); // 早上好
// 如果加上 utf-8 还是会直接输出原始内容
函数参数
fsPromises.readFile(path[, options])
path:< string > | < Buffer > | < URL > | < integger > 文件名或文件描述符
options:< Object > | < string >
edcoding:< string > | < null > 默认值 null
flag:< string > 可以填写的值,在下面,默认值是'r'
signal:< AbortSignal > 允许中止正在进行的读取文件
代码示例
fsPromises.readFile("./歌词.txt", { encoding: "utf-8" }).then(
(res) => {
console.log("res", res);
},
(err) => {
console.log("err", err);
}
);
函数参数
options 参数的意思
flags
: 用于指定文件打开的方式,默认为 “r”,表示以只读方式打开文件。其他常见的取值包括 “w”(写入)、“a”(追加)等代码示例
可以设置
highWaterMark
,默认值是64*1024KB
,默认单位是字节
, 上面的代码就是 每次读取 400 字节
highWaterMark 是 Node.js 中可读流和可写流的一个选项,用于设置缓冲区大小
。对于可读流来说,它表示每次从底层资源读取数据时的最大字节数
,默认值为 64KB。如果正在读取的数据超过了 highWaterMark 的大小,则会暂停读取,直到当前缓冲区中的数据被消费完毕,以保证内存不会被过度占用