什么是IO?
对外部设备的输入与输出,外部设备(磁盘,网卡,显卡,打印机等等),IO速度往往低于内存与CPU之间的交互速度.
fs模块
由于IO的速度远远满于CPU和内存之间的交互速度,如果使用同步代码的话,在做IO是时会阻塞js的执行(js执行是cpu直接与内存交互),因此基本所有的api都是异步执行的,node12之后回调可以使用fs.promise.api 写
1.readFile(filename,encoding) readFileSync 同步读代码
const fs = require("fs");
const path = require("path");
// console.log(path.resolve(__dirname,"./1.txt")); //路径拼接
fs.readFile(path.resolve(__dirname,"./1.txt"),"",(err,content)=>{
console.log(content.toString())
}) //path 编码格式 callback
//编码格式默认为null 可以通过设置
async function test(){
console.log(await fs.promises.readFile(path.resolve(__dirname,"./1.txt"),"utf-8"));
}
2.writeFile(filename,content,encoding) 读文件
const fs = require("fs");
const path = require("path");
const filename = path.resolve(__dirname,"./2.txt") //文件不存在自动添加文件
async function test(){
const buffer = Buffer.from("dasdasfsa","utf-8"); //编码默认utf-8
await fs.promises.writeFile(filename,buffer,{
flag:"a",//a 追加
})
console.log("写入成功")
}
test();
3.stat(filename) 文件或者目录状态
Stats { //状态内容
dev: 177919585,
mode: 33206,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: 4096,
ino: 562949954559788,
size: 45,
blocks: 0,
atimeMs: 1619939334059.6145,
mtimeMs: 1619939333986.0823,
ctimeMs: 1619939333986.0823,
birthtimeMs: 1619939180755.997,
atime: 2021-05-02T07:08:54.060Z,
mtime: 2021-05-02T07:08:53.986Z,
ctime: 2021-05-02T07:08:53.986Z,
birthtime: 2021-05-02T07:06:20.756Z
}
const fs = require("fs");
const path = require("path");
const filename = path.resolve(__dirname,"./1.txt") //文件不存在自动添加文件
async function test(){
let state = await fs.promises.stat(filename);//状态信息
let dir = await fs.promises.readdir(filename); //读取文件子目录
console.log(state.isDirectory(),state.isFile()); //是否是文件或者目录
}
test();
4.readdir() 文件子目录
5.mkdir() 创建目录
6.unlink() 删除文件