1.同步和异步
同步:在主线程中执行,会阻止后续代码的执行,是通过返回值获取结果
异步:在一个独立的线程执行,不会阻止后续代码的执行,是通过回调函数获取结果
2.文件系统(fs)
(1)查看文件状态
statSync(文件的路径) / stat(文件的路径, 回调函数)
isFile() 查看是否为文件
isDirectory() 查看是否为目录
(2)创建目录
mkdirSync(目录的路径) / mkdir(目录的路径, 回调函数)
(3)移除目录
rmdirSync(目录的路径) / rmdir(目录的路径, 回调函数)
不允许移除有文件的目录
练习:分别使用同步和异步方法移除mydir和mydir2
(4)读取目录
readdirSync(目录的路径) / readdir(目录的路径, 回调函数)
读取的结果为数组
(5)清空写入文件
writeFileSync(文件的路径, 写入的数据)/writeFile(文件的路径, 写入的数据, 回调函数)
如果文件不存在,先创建文件然后写入数据
如果文件已经存在,先清空文件中的内容然后写入数据
练习:使用异步方法往2.html中写入内容 ‘WEB2107’
(6)追加写入文件
appendFileSync(文件的路径, 写入的数据)/appendFile(文件的路径, 写入的数据, 回调函数)
如果文件不存在,先创建文件然后写入数据
如果文件已经存在,会在文件的末尾追加写入数据
(7)读取文件
readFileSync(文件的路径)/readFile(文件的路径,回调函数)
格式为buffer数据
(8)删除文件
unlinkSync(文件的路径)/unlink(文件的路径, 回调函数)
(9)检测文件(目录)是否存在
existsSync(文件的路径)
存在->true 不存在->false
(10)拷贝文件
copyFileSync(源文件的路径, 目标文件的路径)/copyFile(源文件的路径, 目标文件的路径, 回调函数)
3.文件流
createReadStream() 创建可读取的流
createWriteStream() 创建可写入的流
on(‘事件名称’, 回调函数) 一旦触发事件,会自动调用回调函数,事件名称是固定的
pipe() 管道,可以将读取的流添加到写入的流
4.http协议
http:超文本传输协议,是浏览器和web服务器之间的通信协议
(1)通用头信息
Request URL:要请求的服务器端的资源
Request Method:请求的方法,对资源的操作方式 get/post…
Status Code:响应的状态码
1**:接收到了请求,还没有作出相应
2**:成功的响应
3**:响应的重定向,发生跳转
4**:客户端错误
5**:服务器端错误
(2)响应头信息 response
Content-Type:响应的内容类型, 解决中文乱码 text/html;charset=utf-8
Location:设置跳转的URL
(3)请求头信息 request
(4)请求主体
只有传递数据才会显示
5.http模块
可以创建WEB服务器,给客户端提供资源
const app=http.createServer();//创建WEB服务器
app.listen(8080); //设置端口
app.on(‘request’, (req,res)=>{
req 请求的对象
req.url获取请求的URL 格式 ‘/login’
req.method 获取请求的方法
res 响应的对象
res.writeHead(状态码, 头信息) 设置响应的状态码和头信息
res.write() 设置响应到浏览器的内容
res.end() 结束并发送响应
})
//引入文件系统模块
const fs=require('fs');
//1.查看文件的状态
//同步:产生阻塞,后边排队执行
/*
var s=fs.statSync('../day02');
console.log(s);
//查看是否为文件形式
console.log( s.isFile() );
//查看是否为目录形式
console.log( s.isDirectory() );
//异步
fs.stat('../day02',(err,s)=>{
//err:可能产生的错误结果
if(err){
throw err;
}
//s:成功的结果
console.log(s);
});
//2.创建目录
//同步
fs.mkdirSync('./mydir');
//异步
fs.mkdir('./mydir2',(err)=>{
if(err){
throw err;
}
console.log('目录创建成功');
});
//3.移除目录
//同步
//fs.rmdirSync('./mydir');
//异步
fs.rmdir('../day02',(err)=>{
if(err){
throw err;
}
console.log('移除成功');
});
//4.读取目录
//同步
//var arr=fs.readdirSync('../day02');
//console.log(arr);
//异步
fs.readdir('../day02',(err,arr)=>{
if(err){
throw err;
}
//读取到的结果
console.log(arr);
});
//5.写入文件
//fs.writeFileSync('./1.txt','涛哥');
//练习:使用异步方法往2.html中写入内容 'WEB2107'
fs.writeFile('./2.html','WEB2107',(err)=>{
if(err) throw err;
console.log('写入成功');
});
//6.追加写入
//fs.appendFileSync('./3.txt','涛哥\n');
//练习:创建数组,包含一组姓名,遍历数组得到每个姓名,使用异步方法把数据写入到文件stu.txt中
var arr=['陈泽辉','王科','李鹏','肖德林'];
//遍历数组
for(var i=0;i<arr.length;i++){
//console.log(arr[i]);
fs.appendFile('./stu.txt',arr[i]+'\n',(err)=>{
if(err) throw err;
});
}
//7.读取文件
var data=fs.readFileSync('./1.txt');
//格式为buffer
console.log(data.toString());
//使用异步读取stu.txt
fs.readFile('./stu.txt',(err,data)=>{
if(err) throw err;
console.log(data.toString());
});
//8.删除文件
//练习:使用同步方法删除1.txt,使用异步方法删除2.html
//fs.unlinkSync('./1.txt');
fs.unlink('./2.html',(err)=>{
if(err) throw err;
});
//9.检测文件是否存在
console.log( fs.existsSync('../day02') );
//练习:如果3.txt文件存在的话,删除该文件;如果mydir目录不存在,创建该目录;都是用同步的方法
if(fs.existsSync('./3.txt')){
fs.unlinkSync('./3.txt');
}
if(!fs.existsSync('./mydir')){
fs.mkdirSync('./mydir');
}
*/
//10.拷贝文件
// fs.copyFileSync('./stu.txt','./mydir/stu.txt');
// console.log('结束');