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

时间:2022-06-08
本文章向大家介绍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)