什么是fs文件系统模块
fs模块是Node.js提供的用来操作文件的模块
功能就是操作文件这么简单
掌握知识点
fs.readFile()方法,读取指定文件中的内容
fs.writeFile()方法,向指定文件中写入内容
了解方法名+aysnc后异步调用
学习知识点
- 掌握知识点:
简单文件读写
– fs.readFile()方法,读取指定文件中的内容
– fs.writeFile()方法,向指定文件中写入内容
流式文件读写
–fs.createReadSteam(),创建读出流
–fs.createWriteStream(),创建写入流 - 了解知识点:
方法名+Sync后 同步调用
使用步骤
简单文件读写
-
第一步引入fs模块
fs是node内置的模块,没有路径也没有.js后缀
const fs = require('fs');
- 第二步调用fs模块的方法实现功能
//读取指定文件的内容
/*语法格式fs.readFile(path[,options],callback)
path 字符串,文件路径
options可选参数
encoding 默认utf8
mode 权限 默认0o666 一般不会改
flag 模式 默认'w' 写入 一般不会改
callback 文件读取后回调函数处理结果
*/
fs.readFile('./0.js','utf8',function(err,data){
//err指读取失败的结果,data为undefined
//data指读取成功的结果,err为null
});
//指定文件中写入内容
/*语法格式fs.writeFile(file,data[,options],callback)
file 字符串,文件路径
data 写入的内容
options可选参数
encoding 默认utf8
mode 权限 默认0o666 一般不会改
flag 模式 默认'w' 写入 一般不会改
callback 文件读取后回调函数处理结果
*/
fs.writeFile('./1.js','写入的内容','utf8',function(err,data){
//err指读取失败的结果,data为undefined
//data指读取成功的结果,err为null
});
了解内容
readFile()和writeFile()两个方法其实是对open()方法和read()/write()方法的封装,一般情况下不会去改权限和模式,如果要改可以参考此文档底部模式的表格
fs模块中所有操作都有两种形式可以选择,同步和异步
同步文件系统也就是操作不完成,不会向下执行,会导致阻塞
异步文件系统操作完成时通过回调函数将结果返回,不会阻塞
/*唯一区别是同步方式结果是通过返回值查看
如果使用过程中指定encoding选项,则返回字符串,否则返回buffer*/
//读取文件
let data = fs.readFileSync();
//向文件中写入
let data = fs.wirteFileSync();
流式文件读写
简单文件写入,写入大文件时可能会造成内存溢出等问题
- 第一步
//引入fs模块
const fs = require('fs');
//创建可写流
//fs.createWriteStream(path[,options])
let ws = fs.createWriteStream('./2.js');
//创建可读流
//fs.createReadStream(path[,options])
let rs = fs.createReadStream('./3.js');
- 第二步,一次或多次读取/写入内容
//查看流是否打开
ws.once("open",function(){
console.log("已开始");
});
rs.once("open",functon(){
console.log("已开始");
})
//查看流是否关闭
ws.once("close",function(){
console.log("已关闭");
});
rs.once("close",function(){
console.log("已关闭");
});
//写入
ws.write("写入的内容123");
ws.write("写入的内容456");
ws.write("写入的内容789");
//关闭,不能用close
ws.end();
//读取时必须为可读流绑定一个data事件,自动开始读和结束
rs.on("data",fucntion(data){
//如果文件打开成功才执行,因此不考虑失败的情况
console.log(data);
//查看分几次读取
console.log(data.length);
});
//边读边写时,就不使用data事件,使用pipe事件
//pipe()可以将可读流中的内容直接输出到可写流中
//rs.pipe(ws);
常用模式
模式 | 说明 |
---|---|
r | 读取文件,文件不存在则出现异常 |
r+ | 读写文件,文件不存在则出现异常 |
w | 打开文件用于写操作,文件不存在则创建,存在则截断 |
wx | 打开文件用于写操作,文件存在则打开失败 |
w+ | 打开文件用于读写操作,文件不存在则创建,存在则截断 |
a | 打开文件用于追加,文件不存在则创建 |
a+ | 打开文件用于读取和追加,文件不存在则创建 |