P14 同步文件写入
fs 文件系统
file system
通过node来操作系统中的文件
使用文件系统,需要先引入fs模块,fs是核心模块,直接引入不需要下载
同步 异步
sync同步 async异步
应该用异步,且异步的都有一个callback的回调函数
同步文件的写入
1️⃣打开文件
文件描述符 是操作系统打开文件后给你的数字,代表这个文件在操作系统中的对象
2️⃣向文件写入内容
3️⃣关闭文件
P15 异步文件写入
1️⃣打开文件
错误优先:只要有可能出现异常的方法,它的回调函数的第一个函数肯定是err
异步方法没有返回值fd,通过回调函数的参数返回
👉 记住:以后有用到回调函数,可以先这样用argument,打印出回调函数的参数
或者去看文档也行
2️⃣异步写入文件 + 3️⃣关闭文件
回调函数的代码是后执行的
执行机制:回调函数是异步任务,会先执行同步任务,再执行异步任务
❤异步性能会更好
JS是单线程,初始化代码执行完以后,从任务队列中循环取出回调函数执行
如果在这些代码后面加上一个console.log('程序向下执行~')
控制台显示:
写入成功~
程序向下执行~ !!!
文件已关闭~
❤异步出错了不影响其他
同步出错了,整个都完了
P16 简单文件写入
也是有 异步 和 同步 的
但没有open和close,因为函数自己都已经封装好了
看到 options 一般传入的都是对象,一般省略
异步
同步同理
打开状态
path是绝对路径
1、两个斜杠 转义自己
2、反斜杠
P17 流式文件写入
同步、异步、简单文件的写入都不适合大文件的写入,性能交叉,容易导致内存移除
流式文件写入就像在文件上嘬一根水管,通过水管把文件向另一个文件进行输送,只要水管在,就可以一直一点一点地写
只要流还在,就可以分很多次一直写入
如果在write之前写
通过 on/once 都可以给对象帮对一个事件
on 是绑定长期有效的事件
once 绑定一次性的事件,该事件将会在触发一次后自动失效
最后写上
P18 简单文件读取
👉 为什么返回的是一个buffer,因为读的文件不一定是字符串的txt文件,也可能是jpg,mp3什么的
Buffer 通用性更强
P19 流式文件读取
流式文件读取适用于一些比较大的文件,可以分多次将文件读取到内存中
如果要读取一个可读流中的数据,必须要为可读流绑定一个data事件,data事件绑定完毕,它会自动开始读取数据
将可读流的内容,直接输出到可写流
pipe()
P20 fs模块的其他方法
检查一个文件是否存在
同步(一般都想马上就知道)
获取文件的状态
同步 + 异步
删除文件
读取目录结构
截断文件
创建/删除一个目录(文件夹)
重命名文件/移动文件
重命名文件
移动文件(可能现在需要绝对路径)
监视文件的修改
最新是使用 fs.watch() 比 fs.watchFile() 和 fs.unwatchFile() 更高效。