• 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");

      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文件是网站的图标

  • 相关阅读:
    spin_lock & mutex_lock的差别?
    Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
    Android ViewPager使用具体解释
    大数运算
    fragment 中利用spinner实现省市联动
    秒杀多线程第四篇 一个经典的多线程同步问题
    Ewebeditor最新漏洞及漏洞大全
    轻松设置百度搜索手写输入
    Rational Rose 2007 &Rational Rose 2003 下载及破解方法和汉化文件下载
    svm中的数学和算法
  • 原文地址:https://www.cnblogs.com/songbingqi/p/12058650.html
Copyright © 2020-2023  润新知