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

这样最终输出的结果是

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

原文地址:https://www.cnblogs.com/ldlx-mars/p/8513314.html