• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LDLX@Y火星
博客园    首页    新随笔    联系   管理    订阅  订阅

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

这样最终输出的结果是

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

posted @ 2018-03-06 11:18  火星黑洞  阅读(231)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3