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 相关文章推荐
学习ExtJS(二) Button常用方法
Oct 07 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 Javascript
使用javascript获取页面名称
Dec 23 Javascript
javascript中传统事件与现代事件
Jun 23 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
Feb 18 Javascript
文件上传,iframe跨域数据提交的实现
Nov 18 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
Mar 26 Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 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中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
微信支付开发维权通知实例
2016/07/12 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
js实现查询商品案例
2020/07/22 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
表演方阵解说词
2014/02/08 职场文书
公司委托书怎么写
2014/08/02 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
小学生作文批改评语
2014/12/25 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript