안녕하세요..

특정 드라이브에 File을 검사하여 File의 Size를 구하는 함수를 많들었는데요.

이게 파일이 많아지면 많아질수록 시간이 오래 걸리더라구요..ㅡㅡ;

제가 한것 말고 시간을 단축 할수 있는 방법이 뭐 없을까요.?

 

GetFileSize()는 드라이버에 파일이름을 검사하여 파일이 존재하면 Size 그렇지 않으면 0을 리턴하는 것이구요.

for()문에서 Total Size를 계산을 하는데요.

 

제생각으로는 for문은 어쩔수 없지만 GetFileSize()를 시간을 단축 해야 할것 같은데요..ㅡㅡ;

 

for(i = 0 ; i > 650 ; i++) {

   sprintf(name, "file_%d.bin", i)

    total_Size = total_Size + GetFileSize("/nand/",  name);

}

 

unsigned int GetFileSize(char* seardir, char* searname) {
 struct dirent** psDirItem;
 struct stat stState;
 unsigned int size = 0;
 char npath[50];
 int numOfItem;
 int i, j, ret = 0;
 
 numOfItem = scandir(seardir, &psDirItem, NULL, alphasort);
 if(numOfItem <= 2) {
  printf("No File In the Folder\n");
 }
 
 for(i = 0 ; i < numOfItem ; i++) {  //File Name

  if(ret == 0) {
   if(strcmp(psDirItem[i]->d_name, searname) == 0) {
    ret = 1;

    for(j = i ; j < numOfItem ; j++) {
     free(psDirItem[j]);
    }
    break;
   }
  }

  free(psDirItem[i]);
 }
 free(psDirItem);

 sprintf(npath, "%s%s", seardir, searname);

 if(ret == 1) {
  stat(npath, &stState);
  size = stState.st_size;
 }
 else {
  size = 0;
 }
 return size;
}