文件操作

来源:互联网 发布:java工作流引擎 开源 编辑:程序博客网 时间:2024/06/06 00:09

#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>

void listdir(char *path,int iYear,int iMon)
{
  char sPath[1024];
  char chn_name[256];
  char fsname[256];
  char ym[5];
  char *pc;
  int i ,j ;
  bool bFlag;
  struct stat  buff;
  
  struct dirent* ent = NULL;
  DIR *pDir;
  char sub_path[1024];
  pDir=opendir(path);
   
  sprintf(ym,"%02d%02d",iYear,iMon);
  while (NULL != (ent=readdir(pDir)))
  {
    sprintf(sub_path,"%s/%s",path, ent->d_name);
    if(stat(sub_path,&buff) < 0 ) 
    {
      continue ; //TODO
    }
    if(S_ISDIR(buff.st_mode))
    {
      continue ;
    }
    if(S_ISREG(buff.st_mode))
    {

                    strcpy(fsname, ent->d_name);
                    if( (pc = strchr(fsname,'.')) == NULL)
                        continue;
                    *pc = '\0';
     strcpy(chn_name ,fsname);
     pc += 1;

     if(strlen(pc)!= 5)
       continue;

     bFlag = false;
     if(*pc == 'O')
     {
       pc +=1;
       if(memcmp( pc, ym ,4) == 0)
       {
         for( i=0 ; i<= iNum ; i++ )
         {
           if( strcmp(Channel[i].cChName,chn_name) == 0)
           {
             bFlag=true;
             break;
           }
         }
         if(bFlag)
         {
                      Channel[i].iOutNum += buff.st_size/LEN_TELE_OUT;
                                    }
                                    else
                                    {
                                        strcpy( Channel[iNum].cChName,chn_name);
                                        Channel[iNum].iOutNum += buff.st_size/LEN_TELE_OUT;
                                        iNum++;
                                    }
                            }
     }
                    else if(*pc == 'I')
     {
       pc +=1;

       if(memcmp( pc, ym ,4) == 0)
       {
         for( i = 0 ; i <= iNum ; i++ )
         {
           if(strcmp(Channel[i].cChName,chn_name) == 0 )
           {
             bFlag=true;
             break;
           }
         }
         if(bFlag)
         {

          Channel[i].iInNum+= buff.st_size/LEN_TELE_IN;

                                    }
                                    else
                                    {
                                        strcpy( Channel[iNum].cChName ,chn_name);
                                        Channel[iNum].iInNum+= buff.st_size/LEN_TELE_IN;
                                        iNum++;
                                    }

       }
     }
                    else
       continue;
    }
  }
  closedir(pDir);
}

原创粉丝点击