vc++遍历某一个目录下的所有 目录和文件代码

本文提供了一个使用VC++实现的目录遍历示例代码,该代码能够递归地获取指定目录下的所有子目录及文件,并分别存储子目录路径和文件路径。通过此示例,读者可以了解到如何利用CFileFind类来实现文件系统的遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vc++遍历某一个目录下的所有 目录和文件代码

 


BOOL GetFile(CString Path)
{

    CStringList listPaths;
    CString  strPath; 
    CString  strFolder;
    CStringList listFiles;
    
int iFileCount=0;
    
int PathLen=Path.GetLength();

    CFileFind finder;
    BOOL bWorking;
    strPath.Format(
"%s/*.*", Path);
    
do{
        bWorking 
= finder.FindFile(strPath);
        
while(bWorking)
        
{
            bWorking 
= finder.FindNextFile();
            
//子目录获取
            CString strFilePath = finder.GetFilePath();
            
if(finder.IsDots())
                
continue;

            
if(finder.IsDirectory())
            
{
                
//文件路径获取这里获取到了
                listPaths.AddHead(strFilePath);
                
continue;
            }

            
else
            
{
                    
int pos=strFilePath.ReverseFind('/');
                    SHFILEINFO sfi;
                    
if (::SHGetFileInfo (strFilePath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO),SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME |SHGFI_ICON|SHGFI_SMALLICON ))
                    
{    
                        CString str;
                        str.Format(
"%s/%s",strFilePath.Mid(0,pos),sfi.szDisplayName);
                        listFiles.AddHead(str);    
                        
//文件带路径的名字获取这里获取到了str
                        iFileCount++;                    
                    }

            }

        }

        
if(listPaths.IsEmpty())
            
break;

        strFolder 
= listPaths.RemoveHead();
        strPath 
= strFolder + "/*.*";
        finder.Close();
    }
while(TRUE);

    
return TRUE;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红火吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值