nodejs:遍历文件夹文件统计文件大小
Posted 飞翔梦想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs:遍历文件夹文件统计文件大小相关的知识,希望对你有一定的参考价值。
根据 http://blog.csdn.net/hero82748274/article/details/45700465这里的思路对读写文件做了一个 封装:
webpack在打包的时候可以借助assets-webpack-plugin插件形成全部打包文件的json map,不过因为项目需要这个生成的json不能满足我的需要,我们目前需要生成形式为以下的json文件:
{
"jsFile":{ "mainSite":"mainSite.js", "size":"296.28/kb"
}, "cssFile":{ "mainSite":"mainSite.css", "size":"32.76/kb" } }
所以用nodejs的fs module实现了这个读写文件的功能,具体如下:
var fs = require(‘fs‘);
var path = require(‘path‘);
var basePath = path.join(__dirname, ‘resources‘);
//遍历文件夹,获取所有文件夹里面的文件信息
function geFileList(folderPath,fileName)
{
this.folderPath=folderPath; //文件夹路径
this.fileName=fileName;
this.filesList = [];
//遍历读取文件
this.readFile=function(path) {
var filesList=this.filesList;
var files = fs.readdirSync(path);//需要用到同步读取
files.forEach(function(file) {
var states = fs.statSync(path+‘/‘+file);
if(states.isDirectory())
{
this.readFile(path+‘/‘+file,filesList);
}
else
{
//创建一个对象保存信息
var obj = new Object();
obj.size = states.size;//文件大小,以字节为单位
obj.name = file;//文件名
obj.path = path+‘/‘+file; //文件绝对路径
this.filesList.push(obj);
}
}.bind(this));
}
//写入文件utf-8格式
this.writeFile=function(data) {
fs.writeFile(this.fileName,data,‘utf-8‘,function() {
console.log("文件生成成功");
});
}
this.formatHandler=function() {
var filesList=this.filesList;
var strJSON={
"jsFile":{},
"cssFile":{}
};
for(var i=0;i<filesList.length;i++)
{
var item = filesList[i],
thisName=item.name,
nameNoSuffix;
if(/\.js$/.test(thisName)) {
//判断是否为js文件
nameNoSuffix=thisName.split(‘.‘)[0];
strJSON["jsFile"][nameNoSuffix]=thisName;
strJSON["jsFile"]["size"]=(item.size/1024).toFixed(2) +"/kb";
}
else if(/\.css$/.test(thisName)) {
//判断是否为css文件
nameNoSuffix=thisName.split(‘.‘)[0];
strJSON["cssFile"][nameNoSuffix]=thisName;
strJSON["cssFile"]["size"]=(item.size/1024).toFixed(2) +"/kb";
}
}
var strJsonObj=JSON.stringify(strJSON);
this.writeFile(strJsonObj);
}
this.init=function() {
var that=this;
console.log(‘test01‘);
//判断打包的时候文件路径是否存在
fs.exists(this.folderPath, function (exists) {
if(exists) {
that.readFile(that.folderPath);
that.formatHandler();
}
});
}
}
module.exports=geFileList;
因为我有多个项目在一起管理,需要一次性生成多个项目的json文件,所以每生成一个json文件都得实例化一个函数,比如:
//生成json map
// ask json
var askFileList=new geFileList(outputPath+"/ask",outputPath+‘/json-ask.json‘);
askFileList.init();
//生成json map
// web json
var askFileList=new geFileList(outputPath+"/web",outputPath+‘/json-web.json‘);
askFileList.init();
注明:用webpack的插件assets-webpack-plugin生成json,参考地址: https://www.npmjs.com/package/assets-webpack-plugin
nodeJS的fs module的API: http://javascript.ruanyifeng.com/nodejs/fs.html
以上是关于nodejs:遍历文件夹文件统计文件大小的主要内容,如果未能解决你的问题,请参考以下文章
Java File 类 文件的常用操作(递归遍历所有文件,统计文件大小,删除文件)
Python小练习---导入os模块做一个统计文件夹大小的函数
C 语言文件操作 ( 配置文件读写 | 写出或更新配置文件 | 函数形参设置 | 确保打开文件成功 | 统计文件大小 )