node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小


Posted in Javascript onJanuary 20, 2017

node.js版    

遍历文件夹下最大的文件,并输出路径,大小

实现代码:

/*
  遍历文件夹下最大的文件,并输出路径,大小
*/
 
function findmax(basepath){
  //只能执行一次
  if(findmax.s) return;
  findmax.s = true;
  var fs = require('fs');
  var maxfile = 0;
  var count = 0;
  var begin = new Date().getTime();
  function Traversal(filepath){
    fs.readdir(filepath, function(err,files){
      if(err) return;
      files.forEach(function(file,index,files){
        //console.log(index + "=" + filepath +"\\" + file);
        var tmppath = filepath +"\\" + file;
        fs.stat(tmppath, function (err, stats) {
         if (err) {
          console.log("打开文件错误" + err);
          return;
         };
         if(stats.isDirectory()) Traversal(tmppath);
         else {
          //console.log(++count +" "+ tmppath + "   " + stats.size);
          count++;
          if(maxfile < stats.size)
            maxfile = stats.size;
         }
        });
      });
    });
  }
  Traversal(basepath);
  process.on('exit', function () {
    var end = new Date().getTime();
   console.log(count + '结束耗时:' + (end - begin) + "ms " + maxfile);
  }); 
  console.log(basepath);
}
 
findmax('D:\\devtools\\');

 C/C++实现代码    

#include <stdio.h> 
#include <windows.h>
#include <time.h>
 
DWORD maxsize = 0;
clock_t start, end;
DWORD count = 0;
 
void find(char * lpPath) 
{ 
  char szFind[MAX_PATH],szFile[MAX_PATH];
  DWORD tmpsize = 0;
  WIN32_FIND_DATA FindFileData; 
  strcpy(szFind,lpPath); 
  strcat(szFind,"\\*.*");
  HANDLE hFind=FindFirstFile(szFind,&FindFileData); 
  if(INVALID_HANDLE_VALUE == hFind) return; 
  while(TRUE)
  { 
    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果为目录
    { 
      if(FindFileData.cFileName[0] != '.') //判断是否为. or ..
      { 
        strcpy(szFile,lpPath);
        strcat(szFile,"\\");
        strcat(szFile,FindFileData.cFileName); 
        find(szFile);//递归调用
      } 
    }else{ 
      //printf("%s\n",FindFileData.cFileName);
      count++;//文件计数
      tmpsize = FindFileData.nFileSizeLow;
      if(maxsize < tmpsize)  maxsize = tmpsize;
    }
    //下一个文件为空,则退出
    if(!FindNextFile(hFind,&FindFileData)) break; 
  } 
} 
 
void main() 
{ 
  char filepath[MAX_PATH]="d:\\devtools"; 
  printf("%s\n",filepath);
  start = clock();
  find(filepath); 
  end = clock();
  printf("文件数:%d %dms max File:%d",count,end - start,maxsize);
  //system("PAUSE");
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript 学习点滴记录
Apr 24 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
vue下使用nginx刷新页面404的问题解决
Aug 02 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 #Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 #Javascript
Vue开发过程中遇到的疑惑知识点总结
Jan 20 #Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 #Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
Jan 20 #Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 #Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 #Javascript
You might like
PHP静态类
2006/11/25 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
Java中final关键字详解
2015/08/10 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python中join函数简单代码示例
2018/01/09 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
大学团支书的自我评价分享
2013/12/14 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
外联部演讲稿
2014/05/24 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers