node.js获取目录内所有文件大小总和

/**
 * 获取指定目录内所有文件大小总和  单位为字节
 * @param dir
 * @param callback
 */
function getdirsize(dir,callback){
    var size = 0;
    fs.stat(dir,function(err,stats){
        if(err) return callback(err);//如果出错
        if(stats.isFile()) return callback(null,stats.size);//如果是文件

fs.readdir(dir,function(err,files){//如果是目录
            if(err) return callback(err);//如果遍历目录出错
            if(files.length==0) return callback(null,0);//如果目录是空的

var count = files.length;//哨兵变量
            for(var i = 0;i<files.length;i++){
                getdirsize(path.join(dir,files[i]),function(err,_size){
                    if(err) return callback(err);
                    size+=_size;
                    if(--count<=0){//如果目录中所有文件(或目录)都遍历完成
                        callback(null,size);
                    }
                });
            }
        });
    });
}

var walk = function(dir, done) {
    //var results = [];
    var size = 0;
    fs.readdir(dir, function(err, list) {
        if (err) return done(err);
        var pending = list.length;
        if (!pending) return done(null, size);
        list.forEach(function(file) {
            file = path.resolve(dir, file);
            fs.stat(file, function(err, stat) {
                if (stat && stat.isDirectory()) {
                    walk(file, function(err, res) {
                        size = size+res;
                        if (!--pending) done(null, size);
                    });
                } else {
                    size = size+stat.size;
                    if (!--pending) done(null, size);
                }
            });
        });
    });
};

时间: 2024-10-12 00:36:34

node.js获取目录内所有文件大小总和的相关文章

node.js获取cookie

node.js 获取cookie var Cookies ={}; if (req.headers.cookie != null) { req.headers.cookie.split(';').forEach(l => { var parts = l.split('='); Cookies[parts[0].trim()] = (parts[1] || '').trim(); }); }

js 获取标签内的内容

js 获取标签内的内容 参考:这篇博客给了我很大的启发. http://www.cnblogs.com/breakdown/archive/2012/10/09/2716221.html 我遇到的问题:获取span标签中的值51,各种折腾:正则,截取,替换,最后参考上文使用替换解决了.特感谢博主. <a href=""><span id="span4028807e4ebe04ee014ebea76a6d0001alarm" style="

node.js获取url中的各个参数

实例代码test.js var http=require('http'); var url=require('url'); var querystring=require('querystring'); http.createServer(function(request, response) { var urlStr = request.url; var methodName = urlStr.substring(1, urlStr.indexOf('?')); console.log('me

node js 获取程序执行时间 time timeEnd

node js 获取程序执行时间 time timeEnd 示例代码: function getFunRunTime(){ console.time('test'); let temp; for (let index = 0; index < 10000; index++) { temp += index } // time和timeEnd的参数要相同 console.timeEnd('test'); } getFunRunTime(); 控制台输出: test: 0.384765625ms 原

js 获取页面内链接

今天有同学问如何用 JS 正则表达式获取一段文本中的超链接,并对超链接进行处理,想了几分钟,写了下面的代码: var re = /https?:\/\/[\w\.:~\-\d\/]+(?:\?[\w\d\-_&=%]+)?(?:#[^\s]+)?/i; 这个正则表达式处理这种类型的URL: protocol://host:port/path?param=value#xxoo 想法是好的,但总要测试通过才可以,随即又写了一段获取页面内所有带有 src, href 属性的代码: function g

Node.js获取GET/POST数据

目标:使用Node.js搭建简单服务器提供简单接口,达到两数字加减乘除计算并返回json结果.(通用GET/POST) 知识点 获取GET数据 获取POST数据 了解监听事件 实现 var http = require("http"); //提供web服务 var url = require("url"); //解析GET请求 var query = require("querystring"); //解析POST请求 //服务 var serv

nginx反向代理node.js获取客户端IP

使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy_set_header server { listen 80; server_name chat.luckybing.top; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; pro

node.js获取本机IP地址

想在node中获取本机ip,需要先判断操作系统,可以通过process.platform来判断,MAC下得到的值是darwin,window下得到的值是win32: 然后再利用os模块的networkInterfaces()可以获取所有网卡信息:从其中就可以找到需要的ip:下面是个小例子 function hostIp() { var IPv4; if(process.platform === 'darwin') { for(var i = 0; i < os.networkInterfaces

js获取非行内样式

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-