C语言readdir()函数:读取目录函数

头文件:#include   

    #include

定义函数:struct dirent * readdir(DIR * dir);
返回值:成功则返回下个目录进入点. 有错误发生或读取到目录文件尾则返回NULL.
附加说明:EBADF 参数dir 为无效的目录流。
函数说明:readdir()返回参数dir 目录流的下个目录进入点。结构dirent 定义如下:

struct dirent
{
    ino_t d_ino; //d_ino 此目录进入点的inode
    ff_t d_off; //d_off 目录文件开头至此目录进入点的位移
    signed short int d_reclen; //d_reclen _name 的长度, 不包含NULL 字符
    unsigned char d_type; //d_type d_name 所指的文件类型 d_name 文件名
    har d_name[256];
};

例:

/*=================hikeen add start================*/     
HI_S32 Hi_EX_Cus_Factory::getininumber(int bType)
{
    LOGE("[%s] called", __FUNCTION__);
      DIR* Filedir;
      struct dirent* ep;
      std::string NameStr="";
      std::string IniString="";
      int IniNum = 0;
      Filedir = opendir("/atv/ini");
      if (Filedir != NULL)
       {
           switch(bType)
           {
               case 0:            //programlist
                IniString = "programlist";
                break;
               case 1:            //DATABASE_DTMB
                IniString = "DATABASE_DTMB";
                break;
               case 2:            //DATABASE_C
                IniString = "DATABASE_C";
                break;
               case 3:            //DATABASE_S
                IniString = "DATABASE_S";
                break;
               case 4:            //DATABASE_T
                IniString = "DATABASE_T";
                break;
           }    
        while (ep = readdir(Filedir))
        {
            NameStr = ep->d_name;
            if(NameStr.find(IniString) != std::string::npos)
                IniNum = IniNum + 1;        
        }    
        (void) closedir(Filedir);
      }else{
        
            LOGI("=====dir open error!!!!============Filedir = NULL");
            }    
     return IniNum;
}
/*=================hikeen add end================*/     

你可能感兴趣的:(工作)