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);
                 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实现遍历文件夹并统计文件大小  http://nodeclass.com/articles/911572

时间: 2024-08-05 22:31:28

NodeJS遍历文件生产文件列表的相关文章

Windows Store App JavaScript 开发:获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

阿里云中获取文件及目录列表的方法

1 获取指定bucket下的文件列表(php-sdk 示例) $prefix = 'dir/'; $delimiter = '/'; $nextMarker = ''; $maxkeys = 30; while (true) { $options = array( 'delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker, ); var_dump($

Win10系列:JavaScript获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

python之路-基础(一):文件处理、列表、元组、字典、set集合

文件处理                                                                                                                                   文件处理模式: [ r  ]  以只读模式打开(只能读)                          [rb  ] 以二进制读模式打开 [ w ]  以只写模式打开(写之前清空文件)                 [wb

Nodejs查找,读写文件

Nodejs查找,读写文件 (1),路径处理1.首先,我们需要注意的文件路径的规范化,nodejs给我们提供了Path模块,normolize方法能帮我们规范化路径:var path = require('path');path.normalize('/foo/bar/nor/faz/..'); -> /foo/bar/nor2.当然还有join合并路径:var path = require('path');path.join('/foo', 'bar', 'baz/asdf', 'quux',

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);) 1获取文件信息 在知道文件相对路径的情形,下面代码可以获取文件的详细信息 1 public static void fileinfo(string Path) 2 { 3 Path = S

webDAV服务的开启以及客户端的上传、下载、删除、新建文件夾、列表的代码(C#)

windows server 2003开启webDAV服务 1. 启动“IIS管理器”选择“WEB服务扩展”,选择“WEBDAV”的允许按钮启动WEBDAV功能 2.建立一个虚拟目录,对应到一个本地目录. 3.启动系统“服务”中的“WebClient”服务 参考网址 WebDAV文档rfc2518    http://www.ietf.org/rfc/rfc2518.txt webdav常用方法和概念总结   http://blog.csdn.net/mahongming/archive/200

数据持久化之文件读写,属性列表(plist)

待完善 数据持久化之文件读写,属性列表(plist),布布扣,bubuko.com

文件测试运算符列表

文件测试运算符列表操作符 说明 举例 -b file 检测文件是否是块设备文件,如果是,则返回 true. -c file 检测文件是否是字符设备文件,如果是,则返回 true. -d file 检测文件是否是目录,如果是,则返回 true. -f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true. -g file 检测文件是否设置了 SGID 位,如果是,则返回 true. -k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回