nodejs遍历文件夹含子文件夹里面的所有文件名_nodejs遍历文件夹(含子文件夹)里面的所有文件

更新时间:2020-02-12    来源:js教程    手机版     字体:

【www.bbyears.com--js教程】


例子1

此方法主要用到了 fs 模块中的 fs.readdirSync 、 fs.statSync , fs.readdirSync 用来读取目录下的文件和文件夹, fs.statSync 用来读取文件或文件夹的相关属性。

/**
 * 获取文件夹下面的所有的文件(包括子文件夹)
 * @param {String} dir
 * @param {Function} callback
 * @returns {Array}
 */
exports.getAllFiles = function (dir, callback) {
  var filesArr = [];
  dir = ///$/.test(dir) ? dir : dir + '/';
  (function dir(dirpath, fn) {
    var files = Sys.fs.readdirSync(dirpath);
    exports.async(files, function (item, next) {
      var info = Sys.fs.statSync(dirpath + item);
      if (info.isDirectory()) {
        dir(dirpath + item + '/', function () {
          next();
        });
      } else {
        filesArr.push(dirpath + item);
        callback && callback(dirpath + item);
        next();
      }
    }, function (err) {
      !err && fn && fn();
    });
  })(dir);
  return filesArr;
}



说明

该方法返回的是所有文件的路径(相对于dir),其中传入的参数callback的参数为文件的真实路径,可以通过callback来对每个文件做处理。

例子2



此方法主要用到了 fs 模块中的 fs.readdirSync 、 fs.statSync , fs.readdirSync 用来读取目录下的文件和文件夹, fs.statSync 用来读取文件或文件夹的相关属性。

此方法需要用到上一篇文章讲到的 link JavaScript异步仿同步(控制流)的实现 。
代码

/**
 * 获取文件夹下面的所有的文件(包括子文件夹)
 * @param {String} dir
 * @param {Function} callback
 * @returns {Array}
 */
exports.getAllFiles = function (dir, callback) {
  var filesArr = [];
  dir = ///$/.test(dir) ? dir : dir + '/';
  (function dir(dirpath, fn) {
    var files = Sys.fs.readdirSync(dirpath);
    exports.async(files, function (item, next) {
      var info = Sys.fs.statSync(dirpath + item);
      if (info.isDirectory()) {
        dir(dirpath + item + '/', function () {
          next();
        });
      } else {
        filesArr.push(dirpath + item);
        callback && callback(dirpath + item);
        next();
      }
    }, function (err) {
      !err && fn && fn();
    });
  })(dir);
  return filesArr;
}



说明

该方法返回的是所有文件的路径(相对于dir),其中传入的参数callback的参数为文件的真实路径,可以通过callback来对每个文件做处理。

var fs = require('fs')
 
 
//遍历文件夹,获取所有文件夹里面的文件信息
/*
 * @param path 路径
 *
 */
 
function geFileList(path)
{
 var filesList = [];
 readFile(path,filesList);
 return filesList;
}
 
//遍历读取文件
function readFile(path,filesList)
{
 files = fs.readdirSync(path);//需要用到同步读取
 files.forEach(walk);
 function walk(file)
 { 
  states = fs.statSync(path+'/'+file);   
  if(states.isDirectory())
  {
   readFile(path+'/'+file,filesList);
  }
  else
  { 
   //创建一个对象保存信息
   var obj = new Object();
   obj.size = states.size;//文件大小,以字节为单位
   obj.name = file;//文件名
   obj.path = path+'/'+file; //文件绝对路径
   filesList.push(obj);
  }  
 }
}
 
//写入文件utf-8格式
function writeFile(fileName,data)
{ 
 fs.writeFile(fileName,data,'utf-8',complete);
 function complete()
 {
  console.log("文件生成成功");
 } 
}
 
 
var filesList = geFileList("G:/nodejs");
filesList.sort(sortHandler);
function sortHandler(a,b)
{
 if(a.size > b.size)
 return -1;
 else if(a.size < b.size) return 1
 return 0;
}
var str='';
for(var i=0;i



使用方法很简单:将 var filesList = geFileList(“G:/nodejs”); 将getFileList 的参数修改成你想要的路径,改变里面参数路径,即可以遍历文件夹的文件,并生成 一份文件

本文来源:http://www.bbyears.com/wangyezhizuo/85190.html

热门标签

更多>>

本类排行