T-Node.js基础-day03-fs模块、http协议和模块

本文详细介绍了Node.js中的fs模块,包括创建目录、读取、移除目录,以及覆盖和追加写入文件的用法,并提供了相关练习。接着讲解了http协议,涵盖通用头信息、响应头信息和请求头信息,以及不同状态码的含义。最后,探讨了http模块,展示了如何创建web服务器和向其他服务器发送请求,提供了一系列的请求响应示例。
摘要由CSDN通过智能技术生成

fs模块

  1. 创建目录
    fs.mkdir(path, callback) / fs.mkdirSync(path)
    path :目录的路径
    callback :回调函数
    //引入fs模块
    const fs=require('fs');
    //1.创建目录
    //make direcotry
    fs.mkdir( 'mydir',function(err){
      //err可能产生的错误
      if(err)  throw err;
      console.log('目录创建成功');
    } );
    
  2. 读取目录
    fs.readdir(path,callback)/fs.readdirSync(path)
    //2.读取目录
    fs.readdir('01_homework',function(err,result){
      if(err) throw err;
      //result是读取的结果
      console.log(result);
    });
    
  3. 移除目录
    fs.rmdir(path,callback)/fs.rmdirSync(path)
    //3.移除目录
    fs.rmdir('01_homework',function(err){
      if(err) throw err;
      console.log('目录移除成功');
    });
    
  4. 覆盖写入文件
    fs.writeFile(path,data,callback)/fs.writeFileSync(path,data)
    path:文件路径
    data:文件要写入的数据
    //4.创建文件/写入文件
    fs.writeFile('1.txt','然哥今天穿一件翠绿色的衣服',function(err){
      if(err) throw err;
      console.log('数据写入成功');
    });
    
    如果文件不存在,会先创建文件然后写入数据
    如果文件已经存在,会覆盖其中的内容写入数据
  5. 追加写入文件
    fs.appendFile(path,data,callback)/fs.appendFileSnyc(path,data)
    //5.创建文件/追加写入
    fs.appendFile('2.txt','然哥今天穿了一斤荧光绿的泳衣\n',function(err){
      if(err) throw err;
    });
    
    如果文件不存在,会先创建文件然后写入数据
    如果文件存在,会在文件的末尾追加写入数据
    练习:将一组数据(数组)使用同步方法追加写入到文件data.txt中
  6. 读取文件
    fs.readFile(path,callback)/fs,readFileSync(path)
    读取的数据格式为Buffer,需要转字符串
    //6.读取文件
    fs.readFile('data.txt',function(err,data){
      if(err) throw err;
      //data读取到的数据,格式为Buffer,需要转为字符串
      console.log( data.toString() );
    });
    
  7. 删除文件
    fs.unlink(path,rallback)/fs.unlinkSync(path)
    //7.删除文件
    fs.unlink('1.txt',function(err){
      if(err) throw err;
      console.log('删除成功');
    });
    

    练习:使用异步方法删除1.txt,使用同步方法删除2.txt
  8. 检测文件(目录)是否存在
    fs.existsSync(path)
    如果存在返回true,不存在返回false
    //8.检测文件(目录)是否存在
    //console.log( fs.existsSync('mydir') );
    //练习:如果目录mydir2不存在则创建该目录,如果文件data.txt存在则删除该文件
    if( !fs.existsSync('mydir2') ){
      fs.mkdirSync('mydir2');
    }
    if( fs.existsSync('data.txt') ){
      fs.unlinkSync('data.txt');
    }
    

    练习:如果目录mydir2不存,则创建该目录,如果文件data.txt存在,则删除该文件
  9. 流:数据流,只需要内存中很小空间,就可以读取一个大文件
    fs.createReadStream(path):创建可读取的流对象
    fs.createWriteStream(path):创建可写入的流对象
    pipe():管道,专门用于处理流
    const fs=require('fs');
    //文件流
    //创建可读取的文件流对象
    let readStream=fs.createReadStream('1.zip');
    //获取数据
    //通过事件:一旦有数据流进来,自动获取
    //on('data')  监听是否有数据流,data是固定写法,就是事件名称;
    //通过回调函数获取数据
    let i=0;
    readStream.on('data',function(chunk){
      //chunk 就是所读取的数据,分段的数据
      //console.log(chunk);
      //每读取一段加1
      i++;
    });
    //事件:监听是否读取结束
    //end是事件名称,固定写入;如果结束会自动触发该事件,执行后边的回调函数
    readStream.on('end',function(){
      console.log('读取结束',i);
    });
    
    
    //使用流完成拷贝大文件
    //创建可读取的流
    const readStream=fs.createReadStream('1.zip');
    //创建可写入的流,同时也会创建新的文件
    const writeStream=fs.createWriteStream('2.rar');
    //把读取的流通过管道添加到写入流
    //pipe 管道
    readStream.pipe(writeStream);
    

http协议

  • 客户端浏览器和web服务器之间的通信协议
  1. 通用头信息(General)
    1. Request URL:请求的URL,代表请求的内容是哪些
    2. Request Method:请求的方法,请求内容的方式,常用的get/post
    3. Status Code:响应的状态码
      1**:正在响应,还没有结束
      2**:成功的响应
      3**:响应的重定向,会跳转到另一个URL,要结婚响应头信息的Location完成跳转
      4**:客户端错误,例404
      5**:服务器端错误
  2. 响应头信息(Response)
    1. Location:跳转到另一个URL,结合状态码3**
    2. Content-Length:响应的内容长度
    3. Accept-Ranges:响应内容的单位,通常是bytes
    4. Content-Type:响应的文件类型
  3. 请求头信息(Request)
    Accept-Encodeing:浏览器接收的压缩类型 gzip/deflate
  4. 请求的主题
    传递的数据,可有可无

http模块

既可以创建一个独立web服务器,也可以模拟浏览器向其他服务器发送请求
1.向其他服务器发请求

  • http.get(url,callback)
  • ul:请求的URL
  • callback:通过回调函数获取响应
    res:响应的对象
    res.statusCode:响应的状态码
    • res.on('data',function(chunk){ })通过事件获取传递的参数,chunk就是获取的数据,格式为Buffer
    const http=require('http');
    //请求其它服务器
    //get 请求方法
    //参数1:请求的URL
    //参数2:通过回调函数获取服务器端的响应
    http.get('http://www.weather.com.cn/data/sk/101030100.html',function(res){
      //res响应的对象
      //获取响应状态码
      console.log(res.statusCode);
      //获取数据(流)
      //监听是否有数据流,通过回调函数获取数据
      res.on('data',function(chunk){
        //chunk传递的数据,分段的
      console.log(chunk.toString());
      });
    });
    
  1. 创建web服务器
const http=require('http');
//创建web服务器
const app=http.createServer();
//设置端口
app.listen(8080);
//服务器端要做出响应
//事件:一旦有请求发生,自动触发这个这个事件,执行回调函数
//通过回调函数做出响应
app.on('request',function(req,res){
  //console.log('有客到!!!');
  //req 请求的对象
  //获取请求的内容
  console.log(req.url);
  //res 响应的对象
  //跳转到另一个URL
  //参数1:设置响应的状态码
  //参数2:可以为空,用来设置响应的头信息
  //res.writeHead(302,{
  //  Location:'http://www.baidu.com'
  //});
  res.write('this is your beer');//设置响应的内容
  res.end(); //结束并发送响应
});

通过:http://127.0.0.1:8080/http://localhost:8080访问


练习:创建web服务器,根据请求作出响应
1. 请求url /login 响应 this is login
2. 请求url /study 跳转到 http://www.baidu.com
3. 其他 响应转台码,404 内容为 not found
思路:就是if判断req.url

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值