node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
node.js版
遍历文件夹下最大的文件,并输出路径,大小
实现代码:
/* 遍历文件夹下最大的文件,并输出路径,大小 */ functionfindmax(basepath){ //只能执行一次 if(findmax.s)return; findmax.s=true; varfs=require('fs'); varmaxfile=0; varcount=0; varbegin=newDate().getTime(); functionTraversal(filepath){ fs.readdir(filepath,function(err,files){ if(err)return; files.forEach(function(file,index,files){ //console.log(index+"="+filepath+"\\"+file); vartmppath=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(){ varend=newDate().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> DWORDmaxsize=0; clock_tstart,end; DWORDcount=0; voidfind(char*lpPath) { charszFind[MAX_PATH],szFile[MAX_PATH]; DWORDtmpsize=0; WIN32_FIND_DATAFindFileData; strcpy(szFind,lpPath); strcat(szFind,"\\*.*"); HANDLEhFind=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; } } voidmain() { charfilepath[MAX_PATH]="d:\\devtools"; printf("%s\n",filepath); start=clock(); find(filepath); end=clock(); printf("文件数:%d%dmsmaxFile:%d",count,end-start,maxsize); //system("PAUSE"); }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!