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