linux下如果目录为空目录,则只有.和.. 这两个也是属于目录类型的
本代码使用递归来判断目录及其子目录是否为空目录
经自己在dedora9下测试通过,希望代码能对大家有点帮助
本代码使用递归来判断目录及其子目录是否为空目录
- /*判断目录是否为空目录*/
- int IsEmptyDir(char *pszDir)
- {
- DIR *pstDirp = NULL;
- struct dirent *pstDirStru = NULL;
- int ulFileNum = 0;
- int ret = 1;
- char szDir[100];
- memset(szDir, 0, 100);
- pstDirp = opendir(pszDir);
- if (NULL == pstDirp)
- {
- printf("open dir error/n");
- return 0;
- }
- while (pstDirStru = readdir(pstDirp))
- {
- strcpy(szDir, pszDir);
- if (DT_DIR == pstDirStru->d_type)
- {
- if (strcmp(pstDirStru->d_name,".") && strcmp(pstDirStru->d_name,".."))
- {
- ret = 0;
- memset(szDir, 0, 100);
- sprintf(szDir, "%s/%s", pszDir, pstDirStru->d_name);
- IsEmptyDir(szDir);
- }
- }
- else
- {
- ret = 0;
- }
- }
- closedir(pstDirp);
- if (ret == 1)
- {
- printf("%s is empty dir/n", szDir);
- }
- else
- {
- printf("%s is not empty dir/n", szDir);
- }
- return ret;
- }