MFC下遍历文件夹下的所有文件,借助于CString类和CFileFind类的便捷

MFC中选择文件夹并遍历里面的所有文件 参数说明: //map<int, string > m_filenames;//保存读出来的文件名 //按钮 void CTestDlg::OnBnClickedButton14() { // TODO: 在此添加控件通知处理程序代码 //选取某个文件夹,并将其里面的文件都存入到map容器当中 num = 1;//记录当前的map容器当中的key的起始位置 CString strFolderPath(_T("")); //TCAHR类型的文本需要用CString类型的变量接受; TCH 阅读详情

MFC下遍历文件夹下的所有文件,借助于CString类和CFileFind类的便捷,代码如下:

只有一层文件结构

很多时候我们要处理的文件只在一个特定的文件夹下,且该路径下除了待处理的文件之外没有其他文件夹,这时情况比较简单,不需要迭代处理,直接按照下面的操作即可:

    CString filepath = _T("/path/to/folder/"); 
    CString filename = _T("");
    CString fullname = _T("");

    CFileFind find;
    BOOL IsFind = find.FindFile(filepath + _T("/*.*"));

    while (IsFind)
    {
        IsFind = find.FindNextFile();
        if (find.IsDots())
        {
            continue;
        }
        else
        {
            filename = find.GetFileName();
            fullname = filepath + filename;
            cout << fullname << endl;
        }
    }

多层文件结构

有时候我们处理的文件有多个文件结构,也就是说文件夹下面还有文件夹,这时候需要采用递归的方式遍历。举个例子,比如我们要处理一批后缀名为.bmp的文件,且这些文件在一个根目录下面的很多子目录下,那么我们可以这样处理:

void BroseAllFiles(CString filepath)
{
    //检测路径是否正确并添加必要信息
    if (filepath == _T(""))
    {
        return;
    }
    else 
    {
        if (filepath.Right(1) != _T(""))
        {
            filepath += _T("\\");
        }
        filepath += _T("*.*");
    }

    //递归枚举文件夹下的内容
    CFileFind find;
    CString strpath;
    CString str_fileName;
    CString fullname;
    BOOL IsFind = find.FindFile(filepath);

    while (IsFind)
    {
        IsFind = find.FindNextFile();
        strpath = find.GetFilePath();

        if (find.IsDirectory() && !find.IsDots())
        {
            BroseAllFiles(strpath);
        }
        else if (!find.IsDierctory() && !find.IsDots())
        {
            str_fileName = find.GetFileName();
            if (str_fileName.Right(3) == _T("bmp")) //如果后缀是bmp文件才处理
            {
                fullname = strpath + str_fileName;
                cout << fullname << endl;
            }
        }
        else 
        {
            continue;
        }
    }
}

注:这个函数是对照参考资料写的,没有经过实际验证,如果出错请自行修改。
--------------------- 
作者:new_xuyangcao 
来源:优快云 
原文:https://blog.youkuaiyun.com/xuyangcao123/article/details/81023552
版权声明:本文为博主原创文章,转载请附上博文链接!

【MFC】MFC基础类——CString(使用心得) 文章目录01、CString类介绍02、常见函数表03、CString类成员函数示例3.1、CString(构造函数)3.2、GetLength3.3、IsEmpty3.4、Empty3.5、GetAt3.6、SetAt3.7、Compare3.8、CompareNoCase3.9、Mid、Right、Left3.10、Find、FindOneOf3.11、MakeUpper、MakeLower、MakeReverse3.12、Replace3.13、Delete、Insert、Remove3.14、For 阅读详情

相关推荐

MFC实现递归遍历文件夹内的所有文件夹和文件(附完整源码)

MFC实现递归遍历文件夹内的所有文件夹和文件(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 841

MFC获取文件夹下的所有文件名

1、获取路径:通过CFileDialog获取文件夹的路径,以及文件夹下面的一个文件 OnBnClickedBtnOpenfile() { // TODO: Add your control notification handler code here CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框 CString csDi

逍遥子曰: 9797

MFC遍历目录包括子目录下所有文件、特定类型文件

【代码】VC++遍历目录包括子目录下文件。

m0_60352504的博客 1938

MFC中CFileFind遍历文件夹下文件

BOOL FindFileAll(const CString &filePath) { CFileFind stFileFind; BOOL bReault = stFileFind.FindFile(filePath); if(FALAE==bResult) return FALSE; while(TRUE==bResult) { bResult = stFileFind. FindNextFile(); .

沉默、凝视的博客 1622

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1969

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

MFC 遍历文件夹下所有子文件夹并将其名称并将其名称加入容器

在COMBOX控件中添加文件夹下所有子文件夹名称 //设置数据库路径 CString Datapath; Datapath= strExePath + _T("\\XX文件夹\\XXX文件夹\\"); //遍历该文件夹,并添加数据 CFileFind finder; BOOL isNotEmpty = finder.FindFile((Datapath + _T("*.*")));//总文件夹,开始遍历 while (isNotEmpty) { isNotEmpty = finder.

PJ 868

C# 开发 ACS 运动控制系统:从入门到高阶应用实践

起始位置</param>/// <param name="endPos">结束位置</param>/// <param name="maxVelocity">最大速度</param>/// <param name="maxAcceleration">最大加速度</param>/// <param name="maxJerk">最大加加速度

品质生活,极致编程。 2842

mfc遍历指定文件夹下的所有文件并排序

mfc遍历指定文件夹下的所有文件并排序 MFC下遍历文件夹下的所有文件,借助于CString类和CFileFind类的便捷,代码如下: 只有一层文件结构 很多时候我们要处理的文件只在一个特定的文件夹下,且该路径下除了待处理的文件之外没有其他文件夹,这时情况比较简单,不需要迭代处理,直接按照下面的操作即可: CString filepath = _T("/path/to/fo...

德固的博客 1895

深入浅出一文搞懂Raft协议

前言 在分布式的世界里,要说最核心最复杂的功能,一致性的实现无出其右,之前的paxos算法堪称经典,被认为是同类算法中效果最好的,基本上成为分布式一致性的代名词,但是paxos算法也是出了名的难理解,而且相当不好实现。本人也花了很多时间、看了很多材料也没有真正理解。所以基于paxos的思想进行的一致性算法的简化和实现就成为了现实的需求,在此背景下,本文的主角Raft就出现了。 Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,R...

microGP的专栏 6485

二、Creo模型的功能函数 例如:模型(元件)的干涉........

【代码】模型(元件)的干涉。

行为艺术家Zzz的博客 613

学习MFC: 遍历指定文件夹下的所有文件并排序

MFC下遍历文件夹下的所有文件,借助于CString类和CFileFind类的便捷,代码如下: 只有一层文件结构 很多时候我们要处理的文件只在一个特定的文件夹下,且该路径下除了待处理的文件之外没有其他文件夹,这时情况比较简单,不需要迭代处理,直接按照下面的操作即可: CString filepath = _T(&quot;/path/to/folder/&quot;); CStri......

newxuyangcao 1万+

AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研

在当今的人工智能时代,大模型技术的迅猛发展为各行各业带来了前所未有的变革。这些大模型,以其强大的语言理解和生成能力,正在逐步成为智能化应用的核心。然而,如何高效地利用这些大模型,构建出满足各种需求的应用,仍然是一个具有挑战性的问题。DB-GPT,作为一个开源的AI原生数据应用开发框架,应运而生,旨在简化大模型应用的开发过程,让构建智能化应用变得触手可及。本文将深入介绍DB-GPT的核心功能、关键特性,并通过实战操作,展示如何利用DB-GPT进行数据应用开发。DB-GPT是一个开源的AI原生数据应用开发框架。

寻道AI,探索AI无限可能! 1万+

MFC中CString类型

1.CString::SpanIncluding,遍历目标字符串,如果发现某个字符不是参数字符集(比如_T(“0123456789”))中的字符,则立即返回. CString str; CString strDigital("0123"); str = "3281345"; CString strVal = str.SpanIncluding(strDigital); MessageBox(str...

u013293483的博客 1217

第9集:AI 驱动的智能日志分析!用 RAG 实现秒级日志检索与异常检测

文章摘要:AI驱动的智能日志分析系统 本文介绍了一个基于RAG(检索增强生成)技术的智能日志分析解决方案,旨在解决传统日志系统中的三大痛点:机械的关键词搜索、缺乏语义理解、告警与日志割裂。系统通过以下步骤实现: 环境准备:安装必要的Python依赖库,包括日志处理、Elasticsearch/Loki连接和时序异常检测工具。 核心设计:构建日志处理流水线,分为日志采集、向量化存储和AI检索分析三个阶段,创建专门的日志分析Agent。 技术实现:使用ChromaDB存储日志向量,通过HuggingFace E

qq_2937655951的博客 79

大模型之Spring AI实战系列(一):基础认知篇 - 开启智能应用开发之旅

Spring AI 是一个轻量级开源框架,旨在简化 AI 模型在企业级 Java 应用中的集成与管理。它提供了跨多个 AI 服务提供商的便携式 API,支持聊天、文本转图像、嵌入式模型等多种功能,并兼容主流的 AI 模型提供商如 OpenAI、Google 等。Spring AI 的核心功能包括结构化输出、向量数据库支持、工具/函数调用、可观察性、文档摄取 ETL 框架、AI 模型评估等。

寻道AI,探索AI无限可能! 6364

遍历

<br />CString m_cstrFileList = "";<br /> CFileFind tempFind;<br /> BOOL bFound = tempFind.FindFile(strFoldername + "//*.*"); // 判断是否成功找到文件<br /> <br /> CString strTmp;       // 如果找到的是文件夹,存放文件夹路径<br /> while(bFound)       // 遍历所有文件<br /> {<br />  bFound = t

daoge2010的专栏 396

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++字符串完全指引之一 —— Win32 字符编码

 原著:Michael Dunn 翻译:Chengjie Sun  原文出处:CodeProject:The Complete Guide to C++ Strings, Part I 引言 毫无疑问,我们都看到过像 TCHAR, std::string, BSTR 等各种各样的字符串类型,还有那些以 _tcs 开头的奇怪的宏。你也许

liufei_learning--脚踏实地,戒骄戒躁! 1143

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MFC:CFileFind类使用方法介绍

CFileFind类是MFC中关于文件操作(含目录,目录是特殊的文件,下面内容中不区分文件和目录,同一称作文件)的一个很重要的类,封装了关于文件查找、遍历的多种操作。

m0_72128260的博客 1424

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MFC 遍历文件夹下的子文件夹并获取最近创建的子文件夹的名字

最近项目上又添加了一个新需求,其中用到了一个功能就是把图片保存到某个文件夹下最近创建的文件夹里。 所以需要读取某个文件夹下的所有子文件夹的创建日期并找出最近创建的。 我在MFC下写了一个demo测试了一下可用。 简单写了,在MFC创建了一个button就在button下写了 void CMFCStudioDlg::OnBnClickedButton4() { CString path = CString(""); path = _T("c:\\ImageLog"); //文件夹路径 CFil

m0_38036750的博客 1344

MFC 获取文件目录中所有文件路径

简述 在MFC中,存在这样一个类,它可以获取目标文件夹下所有的子文件,它就是CFileFind。下面就直接通过一个程序来介绍它。 实例 该实例为:获取目标路径下所有的图像。代码有很多注释,足够理解下面这个程序了。   //方法作用:获取目标路径下的所有图像,保存在矢量容器vector中 //strPath:目标目录,例如“E:\\Img” //vectList:图像矢量容器 void G...

qq_27278957的博客 6154

CString 对路径添加‘/‘符号

        由于对路径的保存有转意字符/的问题,必须用//。所以从界面上获取的路径,在进行保存的时候会有问题,需要添加一个/。      方便的处理如下。     CString strPath="c:/fiel/11/22.txt";     strPath.Replace("//","////"); ok!!!!

air_snake的专栏 1305

MFC的文件操作——获取指定文件夹下面所有文件(夹)路径和删除指定文件夹下面所有文件

【代码】MFC的文件操作——获取指定 文件/文件夹 下面所有文件路径和删除指定文件夹下面所有文件。

NCUTer 4147

遍历获取字符串中的每一个字符

/*遍历获取字符串中的每一个字符*/ /*public final char charAt(int index)              * 读取当前给定索引处的字符              */ import java.util.Scanner; public class Test1 {     public static void main(String[] args) {    ...

点墨漫雪的博客 2万+

MFC下使用CFileFind获取文件夹下所有文件

void AddFileFromFolder(const CString strFolderPath) { CString strMatch = strFolderPath + _T("\\*.*"); CString strFullName; CFileFind finder; BOOL bWorking = finder.FindFile(strMatch); while (bWo

jinshandayouxia的专栏 8822
上一篇: LFilePicker文件选择利器
下一篇: 分享两篇文章,C++程序常见的性能调优方式
confusingbird
博客等级 码龄13年 14粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值