zoukankan      html  css  js  c++  java
  • node.js初识06

    node中的fs文件系统

    var http = require("http");
    
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        var userid = parseInt(Math.random()*89999)+10000;//创建一个随机数
        console.log("欢迎"+userid);
        if(req.url == "/favicon.ico"){
            return;//不加载浏览器窗口的小图标
        }
        res.writeHead(200,{"Content-type":"text/html;charset=UTF8"});
        //两个参数,第一个是完整路径,当前目录./
        //第二个就是回调函数
        fs.readFile("./text.txt",function(err,data){
            if(err){
                throw err;
            }
            console.log("文件读取完毕"+userid);
            res.end(data);
        })
    });
    
    server.listen(3000,"127.0.0.1");

    你可以把127.0.0.1换成你的ip,让其他电脑进行访问,并发请求大的时候,就可以发现node单线程的真是提现

    
    

    var http = require("http");

    
    

    var fs = require("fs");

    
    

    var server = http.createServer(function(req,res){
    if(req.url == "/favicon.ico"){
    return;
    }
    // fs.mkdir("./aaa");//新建文件夹
    // fs.stat("./text.txt",function(err,data){
    // console.log(data.isDirectory());//判断是否是文件夹
    // });
    // 检查文件夹下的所有子文件夹
    var wenjianjia=[];
    fs.readdir("./aaa/",function(err,files){
    // console.log(files);//file是一个数组,会把当前文件夹里所有的文件放在一个数组里
    for (var i = 0; i < files.length; i++) {
    var thefilename = files[i];
    //检查是否是文件夹
    fs.stat("./aaa/"+ thefilename,function(err,stats){
    if(stats.isDirectory()){
    wenjianjia.push(thefilename);
    }
    console.log(wenjianjia);
    })
    }
    });

    
    

    });

    
    

    server.listen(3000,"127.0.0.1");

     

    目录如下

     node 05.js

    这里你会发现没有bbb这个文件夹在数组里,这是因为异步的原因,解决方法就是把异步变成同步

    如何把异步变同步呢

    var http = require("http");
    
    var fs = require("fs");
    
    var server = http.createServer(function(req,res){
        if(req.url == "/favicon.ico"){
            return;
        }
        var wenjianjia=[];
        fs.readdir("./aaa/",function(err,files){
            (function iterator(i){//这个迭代器就是强行把异步变成同步的
                if(i==files.length){
                    console.log(wenjianjia);
                    return;
                }
                fs.stat("./aaa/"+ files[i],function(err,stats){
                    if(stats.isDirectory()){
                        wenjianjia.push(files[i]);
                    }
                    iterator(i+1)
                })
            })(0)
        });
    
    });
    
    server.listen(3000,"127.0.0.1");

    这样最终输出的结果是

    这样就是正确的了,你可以和上面的目录核对一下

  • 相关阅读:
    Spring Boot → 08:嵌入式Servlet容器自定义
    Spring Boot → 09:使用外置Servlet容器_tomcat9.0
    Spring Boot → 07:错误处理机制
    Spring Boot → 06:项目实战-账单管理系统
    Spring Boot → 05:Web开发
    zzz Objective-C的消息传递机制
    Objective-C中的SEL、IMP和Class类型(转)
    zzzObjective-C的动态特性
    zzz KVC/KVO原理详解及编程指南
    zzzzz iOS绘图教程
  • 原文地址:https://www.cnblogs.com/ldlx-mars/p/8513314.html
Copyright © 2011-2022 走看看