代码如下:
#include <dirent.h> #define VALID_FILE_HEAD "converted-" #define VALID_FILE_TAIL ".h264" #define MAX_BUFFER_SIZE 1024 /* enum { DT_UNKNOWN = 0, # define DT_UNKNOWN DT_UNKNOWN DT_FIFO = 1, # define DT_FIFO DT_FIFO DT_CHR = 2, # define DT_CHR DT_CHR DT_DIR = 4, # define DT_DIR DT_DIR DT_BLK = 6, # define DT_BLK DT_BLK DT_REG = 8, # define DT_REG DT_REG DT_LNK = 10, # define DT_LNK DT_LNK DT_SOCK = 12, # define DT_SOCK DT_SOCK DT_WHT = 14 }; */ int process_directory(const int view, const char* pPath) { DIR *pDir; struct dirent *pFile; int validCount = 0; if ((pDir=opendir(pPath)) == NULL) { perror("Open dir error..."); exit(1); } while ((pFile=readdir(pDir)) != NULL) { if (strcmp(pFile->d_name, ".") == 0 || strcmp(pFile->d_name, "..") == 0) { ///current dir OR parrent dir continue; } else if (pFile->d_type == DT_REG) { ///file char fullPath[MAX_BUFFER_SIZE]; sprintf(fullPath, "%s/%s", pPath, pFile->d_name); //GH_LOG_TEXT(fullPath); //限定文件头、文件尾 if ( strstr(pFile->d_name, VALID_FILE_HEAD) != NULL && strstr(pFile->d_name, VALID_FILE_TAIL) != NULL) { gh_ai_channel_process_ghinfer (view, (const char*)fullPath, validCount); validCount ++; } } else if (pFile->d_type == DT_LNK) { ///link file printf("d_name:%s/%s\n", pPath, pFile->d_name); } else if (pFile->d_type == DT_DIR) { ///dir char subDir[MAX_BUFFER_SIZE]; memset(subDir, 0, MAX_BUFFER_SIZE); sprintf(subDir, "%s/%s", pPath, pFile->d_name); //process_directory(view, subDir); } } closedir(pDir); } sprintf(subDir, "%s/%s", pPath, pFile->d_name); //process_directory(view, subDir); } } closedir(pDir); }