头文件:#include <sys/types.h>
#include <dirent.h>
定义函数: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================*/