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学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
Jquery公告滚动+AJAX后台得到数据
Apr 14 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
a标签的href和onclick 的事件的区别介绍
Jul 26 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
原生js实现下拉框功能(支持键盘事件)
Jan 13 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
js实现简单选项卡功能
Mar 23 Javascript
Vue微信公众号网页分享的示例代码
May 28 Javascript
Vue使用Proxy代理后仍无法生效的解决
Nov 13 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
PHP生成Gif图片验证码
2013/10/27 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
php中static和const关键字用法分析
2016/12/07 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
Javascript Math对象
2009/08/13 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
jQuery实现进度条效果代码
2015/12/17 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
后勤人员自我鉴定
2013/10/20 职场文书
安全生产标语
2014/06/06 职场文书
经典祝酒词大全
2015/08/12 职场文书
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers