node.js之文件系统fs---笔记三
一句话理解什么是文件系统fs?
node.js中的内置模块,可以对计算机中的文件进行 [ 增删改查 ] 等操作
如何理解文件系统中的同步异步?
简单理解为两种不同的形式 得到的结果是一样的,同步是链式执行 异步是分支执行,,一般情况下只允许操作一次,结构上也有区别 具体看以下内容:
**注意:无论是写入、读取还是删除 都需要先引入fs模块**
**一般格式 let 变量名 = require('fs'),一般情况下变量名都可以写成fs**
flag : w 写,覆盖操作
flag : a 追加
flag : r 读取
了解的知识:0x ==》 十六进制 0b ==》二进制 0o ==》 八进制
1,文件系统的写入有两种:
在简单写入的格式:
同步:fs.writeFileSync(file‘路径’, data‘内容’);
eg:fs.writeFileSync('./1.html','还是那么热爱前端');
异步:fs.writeFile(file, data, [,options], callback);
eg:fs.writeFile('./2.html','一个学画画的美术猿',err =>{
if(err) throw err; //这里的err 实际是error 错误的意思
})
在流式写入的格式:
`格式: fs.createWriteStream(path[, options]);
eg:
//1.引入 fs 模块
let fs = require('fs');
//2.创建写入流对象
let ws = fs.createWriteStream('./5.html',{flag:'w'});
//3.调用写入的方法
ws.write('青春不常在');
ws.write('抓紧谈恋爱');
ws.write('想都不用想');
ws.write('那就现在吧');
//4.关闭写入流
ws.close();`
两种写入方式相同点:结果都一样
两种写入方式不同点:简单写入相对来讲简单一点 次数较少 而流式写入则可以运用于批量内容的写入
2,文件系统的读取有两种:
简单读取:
格式:fs.readFile(file, function(err, data){})----异步
`eg; fs.readFile('./1.html',(err,data) => {
// err 如果读取失败,返回一个对象,对象中有错误的信息
// err 如果读取成功,返回 null
if(err) throw err;
// 读取成功,打印数据
console.log(data.toString());`
fs.readFileSync(file)----同步
`eg;let result = fs.readFileSync('./2.html');
console.log(result.toString());`
流式读取:
格式: fs.createReadStream();
eg:
`//1. 引入 fs 模块
let fs = require('fs');
//2.创建读取流对象
let rs = fs.createReadStream('./1.html');
//3.绑定事件
rs.on('data',chunk => {
//data 是事件的名字:读取文件的事件名
//chunk 块儿 ,读取文件时,是一段一段读取的(64KB = 65536 字节)
// console.log(chunk.toString());
// console.log(chunk.length);
});
console.log('正在读取文件');
//读取流创建 打开文件的时候 执行
rs.on('open',() =>{
console.log('打开文件');
});
//读取流创建 关闭文件的时候 执行
rs.on('close',() =>{
console.log('关闭文件');
})
//读取完 文件的内容后 执行
rs.on('end',() =>{
console.log('文件读取完成');
})
//执行的顺序是open data end close 但是写入的时候不分顺序`
3,文件系统的删除有两种:
fs.unlink('./test.log', function(err){});---->异步
fs.unlinkSync('./move.txt');-----》同步
//只测试一次
补充部分:
文件夹操作:
` //1.引入 fs 模块
let fs = require('fs');
//创建文件夹
// fs.mkdir('./新建文件夹',err => {
// if(err) throw err;
// console.log('创建成功了');
// })
// //只执行一次
//读取文件夹
// fs.readdir('./',(err,data)=>{
// if(err) throw err;
//
// //data 文件夹下的文件列表
// console.log(data);
// })
// fs.readdir('c:/',(err,data) =>{
// if(err) throw err;
// console.log(data);
// })
//删除文件夹
// fs.rmdir('./新建文件夹',err => {
// if(err) throw err;
// console.log('删除成功了');
// })
//rmdir 在删除的时候,如果是空文件夹,会直接删除
//rmdir 在删除的时候,如果是 非空文件夹 ,则报错
//不管是否是空文件夹,都需删除 recursive:true
fs.rmdir('./file',{recursive:true},err => {
if(err) throw err;
console.log('删除成功了');
})`