如何查找目录下的所有文件夹

时间:2018-01-11 02:01:57

标签: c++ visual-studio mfc

我测试了使用mfc查找具有visual studio环境的目录下的所有文件夹。只需制作一个mfc dlg,添加一个按钮,粘贴下面的代码。唯一要给出的变量是" product_path"带有文件夹的目录,空文件夹就是名称,如123,或abc,或ABC。 测试:   测试1个名为123,456的文件夹。          结果:可以找到所有。   测试2个名为123,456的文件夹,ab。          结果:找不到文件夹名称ab。   测试3个名为123,ab,AB的文件夹。          结果:找不到文件夹名称AB。

/*vector_folder_name used to store found folders*/
vector<CString> vector_folder_name;
/*product_path directory with folders*/
CString product_path=_T("..\\ProductType");
//sprintf(product_path,"..\\%s","ProductType");
if (product_path.Right(1) != "\\")
{
    product_path += _T("\\");
}       
product_path += _T("*.*");
CFileFind ff;

BOOL ret = ff.FindFile(product_path);
while (ret)
{
    ret = ff.FindNextFile();
    if (ret != 0)
    {
        if (ff.IsDirectory() && !ff.IsDots())
        {
            //CString path = ff.GetFilePath();
            CString folder_name = ff.GetFileName();
            vector_folder_name.push_back(folder_name);

            //TraverseDir(path, vec);
        }
        //else /*if(!ff.IsDirectory() && !ff.IsDots())*/
        //{
        //  CString name = ff.GetFileName();
        //  CString path = ff.GetFilePath();
        //  vector_folder_name.push_back(path);
        //}
    }
}
//sort(vector_folder_name.begin(),vector_folder_name.end());
sort(vector_folder_name.begin(),vector_folder_name.end(),compare1);

ff.Close(); // do not foget close

1 个答案:

答案 0 :(得分:2)

您的问题与大写或小写文件名完全无关,并且没有什么神奇的情况,但您的代码不正确。它也与=COUNTIFS(MID(A1:A6;1;9);"06-DEC-17") 函数

无关

Possible to use COUNTIF with a function on the range's values?在找到的最后一个文件后返回compare1,因此您的代码只会跳过找到的最后一个文件。

换句话说,如果FALSE返回FindNextFile,则不是错误,但这意味着您已在目录中获得 last 文件

这个(甚至更简单的)代码可以工作:

FALSE

我已删除您的已注明代码。