nodejs第二天(fs文件系统模块,异步同步区别,同步异步读取,同步异步写入,封装读取文件,同步异步追加文件,nodejs服务器请求事件,favicon.ico文件是网站图标)

fs文件系统模块(详细参考https://www.w3cschool.cn/nodejs/nodejs-fs.html

fs模块是nodejs的核心模块,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX文件系统操作。

fs与其他模块不同的是 fs模块都提供了异步和同步的两个版本,例如  readFile 和 readFilesync 的读取文件就是有两个版本

异步和同步的区别

  同步:执行一个方法,只有方法给出结果后,才算结束

  异步:执行一个方法,只是交代要做的事情,然后去做其他事情,而交代给回调来处理

异步读取

 参数:1,要读取的文件路径

    2,读取时用到的编码格式

    3,回调函数,要来输出读取成功或者是失败

  var fs=require("fs");

扫描二维码关注公众号,回复: 8231491 查看本文章

  fs.readFile("./读取文件的名字.txt","编码格式",回调函数 functio(err,data){

    如果文件读取失败就打印失败,读取成功就打印成功

    if(err){

      console.log(“读取失败”,err.message)

      }else{

      console.log(data) 

      }

  })

同步读取

 参数:1,文本文件

    2,字符编码

  var data=""

  try{

  data = fs.redaFileSync("./文本文件名字.txt","utf-8");  

  console.log("data",data);

  }catch(error){

  console.log("error:",error);

  }

  所有语言程序中 都有try...catch异常捕获机制

  try:试一试 试着做 catch:抓住 捕获 

异步写入

  var fs = require("fs");

   writeFile:write(写)file(文件)

   参数:1,给定一个要写入的文件

      2,要写如的数据

      3,字符编码

      4,回调函数:返回文件写入失败或成功   

  fs.writeFile('./创建的文件名称.txt','要写入的数据','字符编码',回调函数function(err){

    if(err){

      console.log("写入失败",err)

    }else{

      console.log("写入成功”)

    }

})

同步写入(个人认为同步写入和异步写入写法上只在writeFile 和 writeFileSync上有区别

  var fs = require("fs");

   writeFileSync:write(写)file(文件)

   参数:1,给定一个要写入的文件

      2,要写如的数据

      3,字符编码

      4,回调函数:返回文件写入失败或成功   

  fs.writeFileSync('./创建的文件名称.txt','要写入的数据','字符编码',回调函数function(err){

    if(err){

      console.log("同步写入失败",err)

    }else{

      console.log("同步写入成功”)

    }

})

封装读取文件

  1,创建一个http服务器,和 js模块系统

    var http=require("http")

    var fs=require("fs")

  2,创建一个服务器

    http.createSever(function(req,res){

      对请求和响应进行执行

      3,对不同的url地址读取对应的文件

        var url=req.url; 得到浏览器中的地址

        var fileName=“”;

        switch(url){

            case "/"(注意:此处“/”前不带“.”)

              读取文件方法(在此封装了一个函数)

              先把他们读取文件的地址给了fileName

              fileName=“./index.html”

              readFileFun(fileName,res);

              break;

            case "/list.html"(注意:此处“/”前不带“.”)

              读取文件方法(在此封装了一个函数)

              先把他们读取文件的地址给了fileName

              fileName=“./list.html”

              readFileFun(fileName,res);

              break;

            case "/css"(注意:此处“/”前不带“.”)

              读取文件方法(在此封装了一个函数)

              先把他们读取文件的地址给了fileName

              fileName=“./style.css”

              readFileFun(fileName,res);

              break

            defaulte:

              res.end("请输入正确路径")

              break;

            }

    }).listen(4000,function(){

      console.log("服务器启动成功!!")

    })

   4,开始写入封装函数

    function readFileFun(fileName,res){

      进行文件读取

      fs.readFile(fileName,"utf8",function(err,data){

        if(err){

          var msg=fileName+"文件读取失败";

          res.end(msg)

        }else{

          res.write(data);

          res.end();

        }

      })

      }

追加文件(异步)

    追加文件:向文件中追加内容 是不清除原有数据的情况下

    写入文件: 写入数据 每次把原来的数据清除

      var fs=require("fs");

      fs.appendFile("./追加的文件名.txt","追加的内容","编码格式",function(err){

        if(!err){

          console.log("写入数据成功")

        }

      })

追加文件(同步)

  var fs=require("fs")

  try(

      fs.appendFileSync("./追加的文件名称.txt","追加的内容",“编码格式”)

    )catch(error){

      console.log(error)    

    }

nodejs服务器请求文件

  案例步骤:

    1,使用nodejs创建一个http服务器

    2,引入fs文件系统模块

    3,根据浏览器中urk地址的不同读取对应的文件

      路径:“/”,读取index.html

         "/list.html",读取list.html

         "/css",读取style.css文件

      4,将读取的信息输出到浏览端

    //引入http模块

      var http=require("http")

      var fs=require("fs")

      http.createSever(function(req,res){

        var url=req.url;

      //设置头信息读取不同的文件

        res.writeHead(200,{"Content-type":"text/html/css;charset=utf8"})

        if(url=="/"){ 

           //回调的是 错误和成功的信息数据

        fs.readFile("./index.html","utf-8",function(err,data){

          if(err){

              res.write("读取index.html失败")

              res.end();

             }else{

                res.write(data)

                res.end();

               }

             }

         else if(url=="/list.html"){

         fs.readFile("./list.html","utf8",function(err,data){

          if(err){

              res.write("读取list.html文件失败")

              res.end()

            }else{

              res.write(data);

              res.end();

              }                         

            })

          }

          

         else if(url=="/css"){

         fs.readFile("./style.css","utf8",function(err,data){

          if(err){

              res.write("读取css文件失败")

              res.end()

            }else{

              res.write(data);

              res.end();

              }                         

            })

          }

        })

      }).listen(3000,function(){

        consoloe.log("服务启动成功")

      })

favcion.ico文件是网站的图标

猜你喜欢

转载自www.cnblogs.com/songbingqi/p/12058650.html