NodeJS遍历文件生产文件列表功能示例

 更新时间:2017年01月22日 11:54:15   作者:小小平凡世界  
这篇文章主要介绍了NodeJS遍历文件生产文件列表功能,结合实例形式分析了nodejs针对文件与目录的遍历、判断及读写等相关操作技巧,需要的朋友可以参考下

本文实例讲述了NodeJS遍历文件生产文件列表功能。分享给大家供大家参考,具体如下:

功能需求:在工作中我们可能经常需要知道项目中静态文件列表发布,一个一个去检索写,那就太苦逼了。

要想知道里面的文件列表是不是很蛋疼,可能我们也会有dos tree去获取。

这里分享一下,通过node,知道文件路径,并配置远程路径,直接copy,发布。

新建filelist.js 里面都有注释,我就不哆嗦了.

var fs = require("fs");
//path模块,可以生产相对和绝对路径
var path = require("path");
//配置远程路径
var remotePath = "/resource/fd/promote/201507/qixi/";
//获取当前目录绝对路径,这里resolve()不传入参数
var filePath = path.resolve();
//读取文件存储数组
var fileArr = [];
//读取文件目录
fs.readdir(filePath,function(err,files){
  if(err){
    console.log(err);
    return;
  }
  var count = files.length;
  //console.log(files);
  var results = {};
  files.forEach(function(filename){
    //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
    fs.stat(path.join(filePath,filename),function(err, stats){
      if (err) throw err;
      //文件
      if(stats.isFile()){
        if(getdir(filename) == 'html'){
          var newUrl=remotePath+filename;
          fileArr.push(newUrl);
          writeFile(fileArr);
        }
        // (getdir(filename) == 'html')&&(fileArr.push(filename);writeFile(newUrl));
      //  console.log("%s is file", filename);
      }else if(stats.isDirectory()){
        // console.log("%s is a directory文件目录", filename);
         //返回指定文件名的扩展名称 
         //console.log(path.extname("pp/index.html"));
         if(filename == 'css' || filename == 'images'){
//var readurl = filePath+'/'+filename;
             //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
           //  console.log(path.join(filePath,filename));
             var name = filename;
             readFile(path.join(filePath,filename),name);
         }
      }
    });
  });
});
//获取后缀名
function getdir(url){
  var arr = url.split('.');
  var len = arr.length;
  return arr[len-1];
}
//获取文件数组
function readFile(readurl,name){
  console.log(name);
  var name = name;
  fs.readdir(readurl,function(err,files){
    if(err){console.log(err);return;}
    files.forEach(function(filename){
     // console.log(path.join(readurl,filename));
      fs.stat(path.join(readurl,filename),function(err, stats){
        if (err) throw err;
        //是文件
        if(stats.isFile()){
          var newUrl=remotePath+name+'/'+filename;
          fileArr.push(newUrl);
          writeFile(fileArr)
        //是子目录
        }else if(stats.isDirectory()){
          var dirName = filename;
          readFile(path.join(readurl,filename),name+'/'+dirName);
          //利用arguments.callee(path.join())这种形式利用自身函数,会报错
          //arguments.callee(path.join(readurl,filename),name+'/'+dirName);
        }
      });
    });
  });
}
// 写入到filelisttxt文件
function writeFile(data){
  var data = data.join("\n");
  fs.writeFile(filePath+"/"+"filelist.txt",data+'\n',function(err){
    if(err) throw err;
    console.log("写入成功");
  });
}

当我们执行

node flielist.js

就会生产filelist.txt,文件里面就包含了我们想要的路径。

有时,我们通常遇到删除不了的文件,由于文件纵深太长导致 rm _rf也删不了,但是我们通过nodejs可以办到:

var fs = require("fs");
var path = require("path");
deleteFolderRecursive = function(url) {
  var files = [];
  //判断给定的路径是否存在
  if( fs.existsSync(url) ) {
    //返回文件和子目录的数组
    files = fs.readdirSync(url);
    files.forEach(function(file,index){
      // var curPath = url + "/" + file;
      var curPath = path.join(url,file);
      //fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数
      if(fs.statSync(curPath).isDirectory()) { // recurse
        deleteFolderRecursive(curPath);
      // 是文件delete file  
      } else { 
        fs.unlinkSync(curPath);
      }
    });
    fs.rmdirSync(url);
  }else{
    console.log("给定的路径不存在,请给出正确的路径");
  }
};
deleteFolderRecursive("./grunt");

希望本文所述对大家nodejs程序设计有所帮助。

相关文章

  • Node.js和Vue的安装与配置超详细步骤(推荐)

    Node.js和Vue的安装与配置超详细步骤(推荐)

    使用VUE前端框架开发,需要安装Node.js和Vue.js,这篇文章主要给大家介绍了关于Node.js和Vue的安装与配置超详细步骤的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • NodeJS简单实现WebSocket功能示例

    NodeJS简单实现WebSocket功能示例

    这篇文章主要介绍了NodeJS简单实现WebSocket功能,结合具体实例形式分析了nodejs实现WebSocket通信功能的客户端与服务器端相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • 使用Node.js find-up在父目录中高效寻找文件与目录

    使用Node.js find-up在父目录中高效寻找文件与目录

    find-up 是一个小巧但功能强大的 Node.js 包,它能帮助我们实现这一需求,本文将深入探究如何使用 find-up 进行有效搜索,并结合丰富的代码演示帮助大家快速掌握其用法,需要的朋友可以参考下
    2024-05-05
  • NodeJS和浏览器中this关键字的不同之处

    NodeJS和浏览器中this关键字的不同之处

    这篇文章主要给大家介绍了关于NodeJS和浏览器中this关键字不同的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Node.js中调用mysql存储过程示例

    Node.js中调用mysql存储过程示例

    这篇文章主要介绍了Node.js中调用mysql存储过程示例,本文在windows环境测试通过,本文一并给出了创建数据库、录入数据、创建存储过程、调用存储过程等例子,需要的朋友可以参考下
    2014-12-12
  • vscode安装教程以及配置node.js环境全过程

    vscode安装教程以及配置node.js环境全过程

    这篇文章主要给大家介绍了关于vscode安装教程以及配置node.js环境的相关资料,VSCode是一款由微软开发的轻量级编辑器,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 手把手教你更优雅的修改node_modules里的代码

    手把手教你更优雅的修改node_modules里的代码

    这篇文章主要给大家介绍了关于如何更优雅的修改node_modules里的代码的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • 基于Node.js的WebSocket通信实现

    基于Node.js的WebSocket通信实现

    这篇文章主要介绍了基于Node.js的WebSocket通信实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 轻松创建nodejs服务器(10):处理上传图片

    轻松创建nodejs服务器(10):处理上传图片

    这篇文章主要介绍了轻松创建nodejs服务器(10):处理上传图片,本文是系列文章的最后一篇,包含了一个完整的处理上传图片的例子,需要的朋友可以参考下
    2014-12-12
  • node.js读取文件到字符串的方法

    node.js读取文件到字符串的方法

    这篇文章主要介绍了node.js读取文件到字符串的方法,涉及readFileSync方法的使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论