怎么扫描空文件夹

来源:互联网 发布:de castljau算法 编辑:程序博客网 时间:2024/04/29 17:06

其思路就是递归查找文件,然后判断文件夹中有无文件,如果没有文件则是空的文件夹。

效果如图:

实现代码如下:

int SearchFile(TCHAR* szPath,std::vector<std::string>& PathName){    int iFileCount = 0;              //文件夹中的文件个数    WIN32_FIND_DATA windata = { 0 };                HANDLE hFile = NULL;    TCHAR szPathNext[MAX_PATH];         ZeroMemory(szPathNext, sizeof(szPathNext));    sprintf(szPathNext, "%s\\*.*", szPath);         hFile = FindFirstFile(szPathNext, &windata);    if (hFile == INVALID_HANDLE_VALUE)        return -1;    do    {        if (windata.cFileName[0] == '.')            continue;        if (windata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            //这里也要进行++,因为防止递归回来的时候返回的文件个数为0,也就是说把文件夹也算作一个文件处理            //比如:C:\\temp\\1\\2\\3,1文件夹有一个2文件夹,2又有3文件夹            //3文件夹中没有任何文件,所以认定3是空文件夹,当递归回来的时候2 1 文件夹都会返回1,3则返回0.            ++iFileCount;               sprintf(szPathNext, "%s\\%s", szPath, windata.cFileName);            //递归继续查找下一个文件夹            if (0 == SearchFile(szPathNext, PathName)) //如果文件夹中没有文件就会返回0            {                PathName.push_back(szPathNext); //把空文件夹的路径保存起来            }        }        else        {            ++iFileCount;//如果是文件就++        }    } while (FindNextFile(hFile, &windata));    if(hFile)        FindClose(hFile);    return iFileCount;}

如果想删除空文件夹的话用
BOOLRemoveDirectory
(
LPCSTR lpPathName //文件夹路径
)

0 0
原创粉丝点击