• node.js之fs模块


    一、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;
        }
    }
  • 相关阅读:
    localStorage单页面及不同页面监听变动
    localstorage跨域解决方案
    eclipse下安装插件
    (转)springAOP解析-2
    (转)springAOP解析-1
    spring源码深度解析-2功能扩展
    spring源码深度解析-1核心实现
    (转)ConcurrentHashMap解析
    (转)HashMap分析
    java程序员应该掌握的技能
  • 原文地址:https://www.cnblogs.com/15fj/p/7842960.html
Copyright © 2020-2023  润新知