天天看点

C语言文件遍历

遍历某个目录,将目录文件名写入到一个文件中

void SearchFolder(char* folderPath, FILE *fp)  

{  

    _finddata_t FileInfo;  

    char strfind[255];

    char strTemp[255],strTemp2[10];

memset(strfind, 0, sizeof(strfind));

strcat(strfind, folderPath);

strcat(strfind, "\\*");

long Handle = _findfirst(strfind, &FileInfo);  

    if (Handle == -1L)  

    {  

        printf("not find any files under %s\n",strfind);

        return;

    }  

    do{  

        if (FileInfo.attrib & _A_SUBDIR)      

        {  

            if( (strcmp(FileInfo.name,".") != 0 ) &&(strcmp(FileInfo.name,"..") != 0) )     

            {  

                //printf("find a folder %s\n", FileInfo.name);

char newPath[255];

memset(newPath, 0, sizeof(newPath));

strcat(newPath, folderPath);

strcat(newPath, "\\");

strcat(newPath, FileInfo.name);

fwrite("-",1,1,fp);

//fwrite(FileInfo.name, strlen(FileInfo.name), 1, fp);

char *displayPath = substr(newPath, path);

fwrite(displayPath,strlen(displayPath), 1, fp);

SearchFolder(newPath, fp, flag);

            } 

        }  

        else    

        {  

char buf[30];  

memset(strTemp, 0, sizeof(strTemp));

strcpy(strTemp, FileInfo.name);

strcat(strTemp, " ");

sprintf(strTemp2, "%d",FileInfo.size);

strcat(strTemp, strTemp2);

strcat(strTemp, " ");

                seconds2ymdhms(buf, FileInfo.time_write);

strcat(strTemp,buf);

strcat(strTemp, "\n");

fwrite(strTemp,strlen(strTemp), 1, fp); 

        }  

    }while (_findnext(Handle, &FileInfo) == 0);  

    _findclose(Handle);  

}  

char *substr(char *src, char *part)

{

    char *p;

    if (part) {

p = src+ strlen(part)+1;

}

else 

p=src;

return p;

}

/convert seconds since 1970 to y-m-d h:m:s

void seconds2ymdhms (char *buf, time_t time)

{

   struct tm *local;  

   local=localtime(&time);

   strftime(buf,30,"%Y-%m-%d %H:%M:%S",local);

}