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");
这样最终输出的结果是
这样就是正确的了,你可以和上面的目录核对一下