|
char **g_ppFiles = NULL;
int g_g_nFiles = 0;
void GetFilesName(char * myDir)
{
DIR * pDir = NULL;
struct dirent *entry = NULL;
int g_nFiles = 0;
int i = 0;
pDir = opendir(myDir);
if (NULL != pDir)
{
printf("opendir() failed!\n");
return;
}
//统计该目录下有多少个文件
while(NULL != (entry = readdir(pDir))
{
g_nFiles++;
}
//
g_ppFiles = new char *[g_nFiles];
rewinddir(pDir);
while(NULL != (entry = readdir(pDir))
{
g_ppFiles = new char[strlen(entry->d_name) + 1];
strcpy(g_ppFiles[i++], entry->d_name);
}
closedir(pDir);
}
需要注意的是:
1:每个文件夹中都会有"."和"..", 你可以把它们过滤掉。
2: 当然file数组可以静态数组,但如果你用的file数组和我一样是动态分配的(也许你用的是malloc /free函数对),要注意内存的释放。
for(int i = 0; i < g_nFiles; i++)
{
delete [] g_ppFiles;
g_ppFiles = NULL;
}
delete [] g_ppFiles;
g_ppFiles = NULL; |
|