如何用nodejs递归循环遍历输出文件名到一个新的文档内

目标:

    运行nodejs代码,将指定路径下的 所有文件的文件名 写入到一个新的txt文件内。

实现:

   1.创建一个js文件---readFile.js,里面写入如下代码:

var fs = require('fs');                         //读写文件就需要引入fs--文件系统模块
var sep = require('path').sep;                  //平台的文件路径分割符

/**
 * 递归输出文件目录、文件名
 */
var readDir = function(path) {
    var exists = fs.existsSync(path),           //以同步的方法检测目录是否存在
        stat = fs.statSync(path);               //文件信息

    if (exists && stat) {                       //如果目录存在
        if (stat.isFile()) {                    //如果是文件
            var fpath = path.split(sep);        //以路径分割符将路径分割成数组,后面调用symbol方法根据数组长度输出文件名前面的"-"条数
            // console.info(symbol(fpath) + fpath[fpath.length - 1]);  //打印文件名
            fs.appendFile("dir.txt",(symbol(fpath) + fpath[fpath.length - 1]+'\r\n'),function(err){  //调用symbol方法输出"-"并拼接上文件名
                if(err){
                    console.log(err);
                }else{
                    console.log("file writes success!")  
                }
            })
        } else if (stat.isDirectory()) {        //如果是文件夹
            var fpath = path.split(sep);        //以路径分割符将路径分割成数组
            // console.info(symbol(fpath) + fpath[fpath.length - 1]);
            fs.appendFile("dir.txt",(symbol(fpath) + fpath[fpath.length - 1]+'\r\n'),function(err){  //调用symbol方法输出"-"并拼接上文件夹名
                if(err){
                    console.log(err);
                }else{
                    console.log("file writes success!")
                }
            })
            var files = fs.readdirSync(path);   //返回 指定目录下所有文件名称 的数组对象并赋给files
            if (files && files.length > 0) {    //如果文件夹不为空
                files.forEach(function(file) {  //遍历数组
                    readDir(path + sep + file); //递归
                });
            }
        }
    } else {
        console.info('根目录不存在.');
    }
};

/**
 * 符合拼接方法
 */
var symbol = function(fpath) {
    var s = ' - ';
    for (var i = 1; i < fpath.length; i++) { 
        s += ' - ';
    }
    return s;
};

readDir('E:\\mongo');  //调用方法(反斜杠转义,所以用两个,循环遍历输出E盘下mongo文件夹内的文件名到dir.txt)

   2.在dos窗口用node执行上面的js文件

3.看一下成果:

欢迎交流指正~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值