一、fs模块的mkdir函数,创建文件夹
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不处理小图标 if(req.url == "/favicon.ico"){ return; } fs.mkdir("./album/aaa"); }); server.listen(3000,"192.168.41.30");
二、fs模块的stat函数,检测文件状态。回调函数中的stats有isDirectory()方法,可以判断文件夹。
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不处理小图标 if(req.url == "/favicon.ico"){ return; } //stat检测状态 fs.stat("./album/bbb",function(err,data){ //检测这个路径,是不是一个文件夹 console.log(data.isDirectory()); }); }); server.listen(3000,"127.0.0.1");
三、失败案例,列出album文件夹中的所有子文件夹
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不处理小图标 if(req.url == "/favicon.ico"){ return; } //存储所有的文件夹 var wenjianjia = []; //stat检测状态 fs.readdir("./album",function(err,files){ //files是个文件名的数组,并不是文件的数组,表示./album这个文件夹中的所有东西 //包括文件、文件夹 for(var i = 0 ; i < files.length ;i++){ var thefilename = files[i]; //又要进行一次检测 fs.stat("./album/" + thefilename , function(err,stats){ //如果他是一个文件夹,那么输出它: if(stats.isDirectory()){ wenjianjia.push(thefilename); } console.log(wenjianjia); }); } }); }); server.listen(3000,"127.0.0.1");
事件环机制导致的
四、正确的读取所有文件夹的案例。强行把异步变成同步。
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不处理收藏夹小图标 if(req.url == "/favicon.ico"){ return; } //遍历album里面的所有文件、文件夹 fs.readdir("./album/",function(err,files){ //files : ["0.jpg","1.jpg" ……,"aaa","bbb"]; //files是一个存放文件(夹)名的数组 //存放文件夹的数组 var wenjianjia = []; //迭代器就是强行把异步的函数,变成同步的函数 //1做完了,再做2;2做完了,再做3 (function iterator(i){ //遍历结束 if(i == files.length){ console.log(wenjianjia); return; } fs.stat("./album/" + files[i],function(err,stats){ //检测成功之后做的事情 if(stats.isDirectory()){ //如果是文件夹,那么放入数组。不是,什么也不做。 wenjianjia.push(files[i]); } iterator(i+1); }); })(0); }); res.end(); }); server.listen(3000,"127.0.0.1");
五、静态资源文件管理:相当于Apach的工作,把static文件夹当成一个根目录
var http = require("http"); var url = require("url"); var fs = require("fs"); var path = require("path"); http.createServer(function(req,res){ //得到用户的路径 var pathname = url.parse(req.url).pathname; //默认首页 if(pathname == "/"){ pathname = "index.html"; } //拓展名 var extname = path.extname(pathname); //真的读取这个文件 fs.readFile("./static/" + pathname,function(err,data){ if(err){ //如果此文件不存在,就应该用404返回 fs.readFile("./static/404.html",function(err,data){ res.writeHead(404,{"Content-type":"text/html;charset=UTF8"}); res.end(data); }); return; }; //MIME类型,就是 //网页文件: text/html //jpg文件 : image/jpg var mime = getMime(extname); res.writeHead(200,{"Content-type":mime}); res.end(data); }); }).listen(3000,"127.0.0.1"); function getMime(extname){ switch(extname){ case ".html" : return "text/html"; break; case ".jpg" : return "image/jpg"; break; case ".css": return "text/css"; break; } }