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


Posted in NodeJs onJanuary 22, 2017

本文实例讲述了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,文件里面就包含了我们想要的路径。

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

有时,我们通常遇到删除不了的文件,由于文件纵深太长导致 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程序设计有所帮助。

NodeJs 相关文章推荐
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 #NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 #NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 #NodeJs
简单实现nodejs上传功能
Jan 14 #NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 #NodeJs
NodeJS实现客户端js加密
Jan 09 #NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 #NodeJs
You might like
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python中实现三目运算的方法
2015/06/21 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python 图像平移和旋转的实例
2019/01/10 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
创先争优活动方案
2014/02/12 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
python数字图像处理:图像的绘制
2022/06/28 Python