node.js와 C 언어는 폴더에서 가장 큰 파일을 옮겨다니며 출력 경로, 크기

3153 단어
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  
#include 
#include 
 
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
",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
",filepath); start = clock(); find(filepath); end = clock(); printf(" :%d %dms max File:%d",count,end - start,maxsize); //system("PAUSE"); }

읽어주셔서 감사합니다. 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기