一、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(,"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(,"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 = ; 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(,"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+);
});
})();
});
res.end();
}); server.listen(,"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(,{"Content-type":"text/html;charset=UTF8"});
res.end(data);
});
return;
};
//MIME类型,就是
//网页文件: text/html
//jpg文件 : image/jpg
var mime = getMime(extname);
res.writeHead(,{"Content-type":mime});
res.end(data);
}); }).listen(,"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;
}
}

最新文章

  1. iOS 实例变量修饰符
  2. 运用CSS和JS写的大图轮播-带箭头
  3. mongodb主从复制
  4. 会场安排问题—NYOJ14
  5. 查看MYSQL数据库中所有用户及拥有权限
  6. jquery实现图片切换和js实现图片切换
  7. 解决win10 iot VS编程出现的无法引用错误
  8. .NET MVC学习笔记(一)
  9. Oracle新实例创建
  10. solr定时增量索引
  11. 转载 感受K2.Net 2003工作流解决方案
  12. class not found: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  13. 实现string类
  14. Java第一次实训作业
  15. 自己封装element-ui树组件的过滤
  16. yii2安装与初始化
  17. python-django(环境配置)
  18. python排序 sorted()与list.sort() (转)
  19. CSS3透明背景+渐变样式
  20. ActiveMQ的发布者/订阅者模型示例

热门文章

  1. 使用jQuery中trigger()方法自动触发事件
  2. 对Numpy广播操作的理解
  3. nodejs运行前端项目
  4. 你不知的DOM编程
  5. Hibernate的基础入门(一)
  6. defer与async
  7. 状态码为 200 from cache和304 Not modified的区别
  8. airodump-ng使用手册
  9. 分享一个单例模型类Singleton代码
  10. 《天书夜读:从汇编语言到windows内核编程》七 内核字符串与内存