美文网首页
node异步读文件需要遍历展示文件夹总数

node异步读文件需要遍历展示文件夹总数

作者: lixingyang | 来源:发表于2019-11-24 17:40 被阅读0次
    1. 读文件是异步操作
    2. 遍历操作是同步操作
    3. 检测文件状态
        //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);
                });
            }
        });
    

    遍历已经完成,状态还没有做完,导致获取的文件夹数量减少

    解决方法:

    1. for let定义
    2. iterate迭代器
    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);
        });
    

    相关文章

      网友评论

          本文标题:node异步读文件需要遍历展示文件夹总数

          本文链接:https://www.haomeiwen.com/subject/aonlwctx.html