先说一下同步和异步的区别
同步:组值后续代码的执行,限制性完当前的同步菜哦做才能往后执行,通过返回值返回获取结果
异步:不会组织后续代码执行,在一个独立的线程,执行完以后把结果放入到回调函数中,通过回调函数获取结果
引入模块
const fs = requier( ’ fs’ );
(1)查看文件状态
//fs.statSync(文件路径) 同步写法
//例如
fs.statSync('/var/www/html')
//异步 写法
//fs,stat(文件路径,回调函数);
fs.stat('/var/www/html',(err) {
if(err) throw err;
})
//将错误信息保存到err里面
(2)读取目录
同步
fs.readdirSync(文件的路径)
异步
fs.readdir(文件路径,回调函数)
他这个的结果是个数组
所以 var arr= readdirSync( 目录的路径 )
console.log(arr) 获取里面的内容并用数组形式打印出来
异步写法
fs.readdir('文件路径', (err, arr) => {
if (err) throw (err);
console.log(arr);
})
(3)文件写入
同步
fs.writeFileSync(文件路径,写入信息)
例如
fs.writeFileSync('./1.txt', 'hello');
//覆盖写入,如果不存在有创建功能
异步
fs.writeFile(文件路径,写入内容,回调函数)
例如
fs.writeFile('./2.txt', '然哥', (err) => {
if (err) throw (err);
})
4.追加写入文件
appendFileSync(文件的路径, 写入的数据) 同步写法
appendFileSync(' var /www/1.txt','我丢这么帅气呢 '`)
//异步写法
appendFile(' var /www/1.txt','我丢这么帅气呢 ',(err)=>{
if(err) throw err;
})
/appendFile(文件的路径, 写入的数据, 回调函数)
如果文件不存在,先创建文件然后写入数据
如果文件已经存在,会在文件末尾追加写入数据
先创建一个数组 遍历数组将写入所有内容
//创建数组
var arr = ['赵1','赵2','赵3','赵4']
//遍历数组,并将数组里面的每个元素写入到stu.txt里面
for (var i = 0;i<arr.length;i++){fs.appendFileSync('./stu.txt', arr[i]+ '\n'}
//异步写法
for(var i=0;i<arr.length;i++) {
fs.appendFile( )
}
(5)读取文件
readFileSync(文件的路径)/readFile(文件的路径, 回调函数)
读取的文件数据格// 5.读取文件数据格式为Buffer
let data = fs.readFileSync('./stu.txt');
console.log(String(data));
//异步读取的方法
fs.readFile('./stu.txt', (err, data) => {
if (err) throw err;
console.log(data.toString());
// err 一旦报错就将错误放入到err
})
(6)删除文件
删除1.txt 2.txt
同步写法
unlinkSync(文件的路径)
fs.unlinkSync('./1.txt');
异步写法
unlink(文件的路径,回调函数)
fs.unlink('./2.txt', (err) => {
if (err) throw err;
});
// err 一旦报错就将错误放入到err
(7)existsSync 检测是否存在
这个只有同步写法,异步写法被弃用了。
//fs.fs.existsSync('./04_http.js');
//判断 这个文件是否在如果存在将其删除掉
if(fs.existsSync('./04_http.js')) {
fs.unlinkSync('./04_http.js')
}
//执行出来就会将这个文件给删除掉
存在-true 不存在-false
(8) 拷贝文件
同步 copyFileSync (源文件,目标文件的路径)
fs.copyFileSync('./stu.txt', './mydir/2.txt');
异步 /copyFile(源文件,目标文件,回调函数 )
fs.copyFile('/var/www/html','/var/www/html2',(err)=>{
if (err) throw err;
})
(9)文件流
createRead`Stream()创建可读取的流
createWriteStream()创建可写入的流
pipe ()用于将读取的流添加到写入流
const rs = fs.createReadStream('./1.zip');
const ws = fs.createWriteStream('./3.zip')
//把读取的流通过管道的方法来添加到写入流
rs.pipe(ws);
监听事件:一旦触发时间,自动调用回调函数
on(事件名称,回调函数)
2.http协议
http协议是浏览器和web服务器之间的通信协议。
(1)通用的头信息
Request URL:请求的URL
Request Method:请求的方法 get/post
1**:正在响应,还没有结束 //100系列
2**:成功的响应 //200
3**:相应的重定向,跳转 //300系列 302
4**:客户端请求错误 //400系列 404
5**:服务器错误 //500系列 502
(2)响应的头信息response
Content-Type:响应的内容类型 text/html
Location:响应跳转的URL,结合着状态码302使用
(3)请求的头信息request
(4)请求的主体
可有可无,如果没有传数据不显示这项
请求过程中表单传递的数据
3.http模块
可以用来创建web服务器
http.crrate.Server() 创建web服务器
listen( )设置端口
//给服务器添加事件,用于接受请求,以及做出响应
on('request',(req,res)=>{
req 请求的对象
req.url 请求的URL对应的端口号后的部分,格式/login
req.Method 请求的方法
res响应的对象
res.writeHead() 设置响应的状态码和头信息
res.write()设置响应的内容
res.end()结束并发送响应
})