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

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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端儿

Node.js起步 -- (1)

  我们知道JavaScript是运行在浏览器中的,浏览器为它提供了一个上下文(context),从而让JavaScript得以解析执行。

1622
来自专栏我就是马云飞

设计模式二十四章经之命令模式

862
来自专栏用户2442861的专栏

linux动态库和静态库

http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/

5292
来自专栏chenssy

【死磕Java并发】—–J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE...

3514
来自专栏上善若水

L002Linux和androidNDK之修改进程名

其中 argc表示命令行参数的个数; argv是一个指针数组,保存所有命令行字符串。

942
来自专栏Hongten

oracle系列--第六篇 Oracle上面小试牛刀

现在我们可以在oracle上面进行创建表,向表中插入数据,修改表中数据,删除数据,甚至删除表等一系列操作。

1043
来自专栏hbbliyong

Python类、模块、包的区别

模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般...

1692
来自专栏电光石火

给博客添加节日雪花

二话不说先上效果图: ? 需要的朋友请看下面的说明,对JQ比较了解的朋友可以直接下载。 下载地址:jQuery圣诞下雪花.rar 注意事项 ...

2307
来自专栏黄Java的地盘

如何实现一个简单的Node.js脚手架

对前端、Node操作有一定的了解,同时向了解脚手架开发过程或者需要自己实现一个脚手架的开发者。

1671
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(十二) ——Redis键的生存时间与过期时间

《Redis设计与实现》读书笔记(十二) ——Redis键的生存时间与过期时间 (原创内容,转载请注明来源,谢谢) 1、设置方式 在redis客户端,可以通过e...

2904

扫码关注云+社区

领取腾讯云代金券