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 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
JS模拟面向对象全解(一、类型及传递)
Jul 13 Javascript
javascript回车完美实现tab切换功能
Mar 13 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
Angularjs---项目搭建图文教程
Jul 08 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 Javascript
JavaScript时间日期操作实例小结【5个示例】
Dec 22 Javascript
H5实现手机拍照和选择上传功能
Dec 18 Javascript
js实现翻牌小游戏
Jul 31 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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php使用GeoIP库实例
2014/06/27 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
在Python中定义和使用抽象类的方法
2016/06/30 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
用Python设计一个经典小游戏
2017/05/15 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
2016入党心得体会范文
2016/01/06 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
python blinker 信号库
2022/05/04 Python