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 快速排序函数代码
May 30 Javascript
JavaScript移除数组内重复元素的方法
Mar 18 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
Mar 01 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
Jan 08 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
js技巧之十几行的代码实现vue.watch代码
Jun 09 Javascript
修改vue+webpack run build的路径方法
Sep 01 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Exjs 入门篇
2010/04/07 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
如何快速上手Vuex
2017/02/14 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
python进行TCP端口扫描的实现
2018/12/21 Python
Python向excel中写入数据的方法
2019/05/05 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
python 字典的打印实现
2019/09/26 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
高中生自我评价个人范文
2013/11/09 职场文书
优秀广告词大全
2014/03/19 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
节约用电倡议书
2015/04/28 职场文书
公司安全管理制度范本
2015/08/05 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js