前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >node读取目录下文件,筛选文件夹和文件!

node读取目录下文件,筛选文件夹和文件!

作者头像
十月梦想
发布2018-08-29 11:42:44
1.9K0
发布2018-08-29 11:42:44
举报
文章被收录于专栏:十月梦想十月梦想十月梦想

node也学习了几天,今天讲解一下刚学习的小案例!使用fs模块fs.readdir读取只能目录下文件,筛选文件和文件夹

案例代码

//遍历出是文件夹的文件,把异步变为同步方法!
const http=require('http');
const fs=require('fs')
const server=http.createServer(function(req,res){
    res.writeHead(200,{"content-type":"text/html;charset=UTF8"})
    //存放文件夹的数组

    fs.readdir('../album',function(err,files){
      var wenjianjia=[];
    //fs.readdir//读取album目录下所有的文件和文件夹
//  迭代器强行把异步方法改变为同步,先执行1执行完毕后执行2,以此执行
   (function iterator(i){
      //遍历结束: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('ok')
})
//监听端口
server.listen(3000,"127.0.0.1");

fs.readdirAPI简单介绍

fs.readdir('../album',function(err,files){
    console.log(files)
}

列出目录下的所有文件和文件夹

fs.stat介绍(检测文件状态可以判断是文件或者文件夹)

fs.stat(filesname,callback),回调函数中两个参数err,和stats,stats有个isDirectory属性,可以判断是否为文件夹

然后pull到数组就ok!

之前讲述的node的非阻塞I/O( no blocking I/O),会进行异步读取!所以没有读取完成则进行下一个(读取文件判断,下面的语句);这样不是我们所需要的,那么就要使用一个迭代器,强制异步变为同步!

使用迭代器iterator

function iterator(i){
    //结束遍历
    if(i ==files.length){
  console.log(wenjainjia)  ; 
 return;
}
    //检测文件
    ......
    //检测完成后执行
    iterator(i+1)
}(0)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-6-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档