fs - file system 文件系统的缩写
fs模块可以实现与硬盘的交互
例如文件的创建、删除、重命名、移动、文件内容的写入、读取以及文件夹的相关操作
fs 文件写入 几种方式
| 方法 | 说明 |
|---|---|
| writeFile | 异步写入 |
| writeFileSync | 同步写入 |
| appendFile/appendFileSync | 追加写入 |
| createWriteStream | 流式写入 |
writeFile 异步写入
语法:fs.writeFile(file, data, [options], callback)
参数说明:
- file 文件名
- data 待写入的数据
- options 选项设置(可选)
- callback 写入回调
代码示例:
// 导入fs模块
const fs = require('fs')
// 将文本 '第一个内容' 写入到当前文件夹下的写入内容.txt文件中
fs.writeFile('./写入内容.txt','写入的第一个内容',(err)=>{
//如果写入失败,则回调函数调用会返回错误对象,如写入成功会返回null
if(err){
console.log(err);
return
}
console.log('写入成功');
})
writeFileSync 同步写入
语法:fs.writeFileSync(file, data, [options])
参数说明:
- file 文件名
- data 待写入的数据
- options 选项设置(可选)
代码示例:
//1. 导入fs模块
const fs = require('fs')
//同步写入
fs.writeFileSync('./data.txt','test')
appendFile/appendFileSync 异步追加写入 同步追加写入
语法:fs.appendFile(file, data, [options],callback) fs.appendFileSync(file, data, [options],callback)
参数说明:
- file 文件名
- data 待写入的数据
- options 选项设置(可选)
- callback 写入回调
代码示例:
//1. 导入fs模块
const fs = require('fs')
//异步追加写入 appendFile
fs.appendFile('./写入内容.txt','追加一个1111',err=>{
//如果追加失败,则回调函数调用会返回错误对象,如追加成功会返回null
if(err){
console.log(err);
return
}
console.log('追加成功');
})
//同步追加 换行\r\n
fs.appendFileSync('./写入内容.txt','\r\n追加一个1111')
createWriteStream 流式写入
语法:fs.createWriteStream(path,[options],)
参数说明:
- path 文件路径
- options 选项设置(可选)
代码示例:
//1. 导入fs模块
const fs = require('fs')
//2.创建写入流对象
const ws = fs.createWriteStream('./观树有感.txt')
//3. write
ws.write('半亩方塘一鉴开\r\n')
ws.write('天光云影共徘徊\r\n')
ws.write('问渠那得清如许\r\n')
ws.write('为有源头活水来\r\n')
//4. 关闭通道
ws.close()
场景使用
程序打开一个文件是需要消耗资源的,流式写入可以减少打开关闭文件的次数 流式写入适合大文件写入或者频繁写入的场景,writeFile适合于写入频率较低的场景
文件写入场景
文件写入在计算机中是一个非常常见的操作,下面场景都用到了文件写入
- 下载文件
- 安装软件
- 保存程序日志 如 Git
- 编辑器保存文件
- 视频录制
当需要持久化保存数据的时候,应该想到文件写入
文件读取
文件读取顾名思义,就是通过程序从文件中取出其中的数据,我们可以使用如下几种方式:
| 方法 | 说明 |
|---|---|
| readFile | 异步读取 |
| readFileSync | 同步读取 |
| createReadStream | 流式读取 |
readFile 异步读取
语法:fs.readFile(path,[options],callback)
参数说明:
- path 文件路径
- options 选项设置(可选)
- callback 回调函数
代码示例:
//1. 导入fs模块
const fs = require('fs')
//异步读取
fs.readFile('./观树有感.txt',(err,data)=>{
if(err){
console.log(err);
return
}
console.log('读取成功',data.toString());
})
readFileSync 同步读取
语法:fs.readFileSync(path,[options])
参数说明:
- path 文件路径
- options 选项设置(可选)
代码示例:
//1. 导入fs模块
const fs = require('fs')
// 同步读取
let data = fs.readFileSync('./观树有感.txt')
console.log(data.toString());
createReadStream 流式读取
语法:fs.createReadStream(path,[options])
参数说明:
- path 文件路径
- options 选项设置(可选)
代码示例:
//1. 导入fs模块
const fs = require('fs')
//2.流式读取
const rs = fs.createReadStream('./观树有感.txt')
//3.绑定data事件
rs.on('data',chunk=>{
console.log(chunk.toString());
})
//4.end 可选
rs.on('end',()=>{
console.log('读取完成');
})
文件读取场景
- 电脑开机
- 程序运行
- 编辑器打开文件
- 查看图片
- 播放音乐
- 播放视频
- Git查看日志
- 上传文件
- 查看聊天记录