MFC:CFileFind类使用方法介绍

       这是一个介绍MFC中CFileFind类的小程序。编写这个程序使用的编辑软件是VS2022,基于C++空项目。在C++空项目下要调用MFC类需要:首先,头文件要包含<afx.h>,这个头文件包含了绝大部分使用MFC所需头文件;其次,在项目属性中选用MFC类库(项目属性->配置属性->高级:选用MFC静态库)并把字符集选为“多字符集”。显示方式仍是控制台窗口。
       说到CFileFind类,它是MFC中关于文件操作(含目录,目录是特殊的文件,下面内容中不区分文件和目录,统一称作文件)的一个很重要的类,封装了关于文件查找、遍历的多种操作。提到MFC的类,常见的操作手法是通过类对象调用其成员函数完成相关操作,这个CFileFind类也不例外。下面,就CFileFind类使用的一般步骤介绍如下:
   1、声明CFileFind对象
        声明方式:CFileFind myFind; 
   2、开始查找函数FindFile
        函数调用方式: myFind.FindFile(); //参数 全路径名,可以使用通配符
        结合下一步骤函数FindNextFile()名字,可能会误以为FindFile这一步骤已将找到的第一个文件的信息保存到myFind中,实际上没有。这一步骤可以理解成是查找文件工作的初始化。FindFile函数有返回值,BOOL类型,初始化成功返回TRUE,失败返回FALSE。
   3、查找下一个文件FindNextFile()
        函数调用方式: myFind.FindNextFile( ); //无参 
        这个函数不能从字面理解,认为它只是和下一个文件相关。实际它的功能分成两块:一是将找到的当前文件的信息存入myFind;二是检查下一个文件的情况,检查结果就是返回值,下个文件存就返回TRUE、不存在则返回FALSE。
   4、调用系列Getxxx系列函数获取文件信息
        函数调用方式:myFind.GetFileName( ); //获得文件名函数,无参
       可以用CString对象接收返回值(文件信息),到这一步才可以得到文件的具体信息。
   5、调用系列Isxxx系列函数获取文件属性信息
        函数调用方式:myFind.IsDirectory( ); //获得文件是否是目录,无参
        返回值为BOOL类型,是目录返回TRUE,不是目录返回FALSE。
   6、关闭查找函数Close
        调用方式:myFind.Close( ); //无参
        关于CFileFind类的使用步骤,大致是上面这些,其中1、2、3、6是彼此匹配依赖出现的,不能漏项。
        根据上面的介绍内容,举一个遍历某目录并显示文件名的例子:(有关代码及注释如下)

#include <afx.h>
#include <iostream>
using namespace std;
void myfind(CString path)
{CString pathStr = path; //将参数传入的CString类型的路径赋值给strPathpathStr += "/*.*";//合在一起构成"c:/*.*"CFileFind myFind; //声明文件搜索类对象findBOOL isFind = myFind.FindFile(pathStr);//开始查找while (isFind) //如开始查找返回FALSE,则不会进入循环{isFind = myFind.FindNextFile();//返回下一个文件是否存在并将当前文件信息存入myFind对象CString fileName = myFind.GetFileName(); //获取文件名CString filePath = myFind.GetFilePath(); //获取文件全路径(含文件名)if (myFind.IsDirectory() && !myFind.IsDots()) {cout <<"[" << fileName << "]" << endl;//如果文件是目录则将文件名(目录名)加上中括号显示myfind(filePath);//对函数myFind进行递归调用(如查找到的文件是目录则调用函数自身继续进入目录)}else {cout <<fileName << endl; //如不是目录则显示文件名}}myFind.Close();//关闭CFileFind类对象
}
int main()
{myfind("c:"); //查找并显示C:目录下的所有文件system("pause");return 0;
}

附:一些获取文件信息、文件属性的函数
  GetLength 获取找到文件的长度,以字节为单位
  GetFileName 获取找到文件的名字
  GetFilePath 找到文件的全路径(含文件名)
  GetRoot 获取找到文件根目录
  GetCreationTime 获取文件创建时间
  GetLastAccessTime 获取文件最后一次打开的时间
  GetLastWriteTime 文件最后改变和存储的时间
  IsReadOnly 文件是否是只读
  IsDirectory 文件是否是目录
  IsCompressed 文件是否是压缩
  IsSystem 文件是否是系统文件
  IsHidden 文件是否是具隐藏属性
  IsTemporary文件是否是临时的
  IsNormal文件是否是常规的(无其它属性)
  IsArchived文件是否是档案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线改图片怎么做更简单?快速修改图片尺寸的方法

现在一般拍摄出的图片尺寸都会比较大&#xff0c;想要上传大网上的一些平台展示时&#xff0c;经常会受到平台的限制&#xff0c;无法将图片正常上传到平台&#xff0c;那么如何将图片尺寸快速调整呢&#xff1f;比较简单的一种方式&#xff0c;可以通过在线改图片的工具来实现…

一个开源的个人主页模板,可以通过 Github Actions 来进行自动构建。

無名の主页 简单的小主页&#xff0c;原来的看够了&#xff0c;重新弄了一个 主页的 Logo 字体已经过压缩&#xff0c;若用本站 Logo 以外的字母会变回默认字体&#xff0c;这里是 完整字体&#xff0c;若无法下载&#xff0c;可将字体目录下的 Pacifico-Regular-all.ttf 进行替…

Linux程序开发(十一):进程与进程间通信设计之趣味猫咪抓老鼠游戏

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

他用AI,抄袭了我的AI作品

《大话西游》里面有一句经典台词&#xff1a;每个人都有一个妈&#xff0c;但是“你妈就一定是你妈吗&#xff1f;” 用AI创作的艺术作品&#xff0c;也走进类似的困境&#xff1a;如何证明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;腾讯科技独…

Google手机连接wifi后提示“无法连接互联网“解决方法

1.原因分析 谷歌手机联网前会先访问谷歌的服务器:http://clients3.google.com/generate_204来探测网络是否连通&#xff0c;由于国内网络防火墙的原因访问不了&#xff0c;所以就提示"无网络连接"。 2.解决方法 可以通过adb命令修改验证网络是否连通的服务器地址&…

SpringCloudAlibaba:6.3SpringBoot接入RocketMQ

依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 htt…

【C++提高编程-04】----C++之Vector容器实战

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

STM32+CubeMX移植SPI协议驱动W25Q16FLash存储器

STM32CubeMX移植SPI协议驱动W25Q16FLash存储器 SPI简介拓扑结构时钟相位&#xff08;CPHA&#xff09;和时钟极性&#xff08; CPOL&#xff09; W25Q16简介什么是Flash&#xff0c;有什么特点&#xff1f;W25Q16内部块、扇区、页的划分引脚定义通讯方式控制指令原理图 CubeMX配…

iBarcoder for Mac v3.15.1中文激活版:让条形码生成变得如此简单

在现代社会&#xff0c;条形码无处不在&#xff0c;从超市商品到物流包裹&#xff0c;都离不开它的身影。iBarcoder for Mac作为一款简单易用的条形码生成软件&#xff0c;让条形码的生成变得如此简单。 iBarcoder for Mac v3.15.1中文激活版下载 无论你是需要为商品添加条形码…

Scrapy框架简单介绍及Scrapy项目编写详细步骤

引言 Scrapy是一个用Python编写的开源、功能强大的网络爬虫框架&#xff0c;专为网页抓取和数据提取设计。它允许开发者高效地从网站上抓取所需的数据&#xff0c;并通过一系列可扩展和可配置的组件来处理这些数据。Scrapy框架的核心组成部分包括&#xff1a; Scrapy Engine&…

aws glue配置读取本地kafka数据源

创建连接时填写本地私有ip地址&#xff0c;选择网络配置 配置任务选择kafka作为数据源 但是执行任务时日志显示连接失败 文档提到只能用加密通信 如果您希望与 Kafka 数据源建立安全连接&#xff0c;请选择 Require SSL connection (需要 SSL 连接)&#xff0c;并在 Kafka priv…

python批发模块的调试之旅:从新手到专家的蜕变

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、调试技巧的重要性 二、批发模块调试的实战演练 1. 设置断点 2. 逐行执行代码 3. 观察…

Android+SQLiteOpenHelper实现登录记住密码小案例

实现自动登录&#xff0c;在数据库中存 注册的账号信息 package com.example.databases_text;import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import andro…

运维行业中的堆叠交换机监控与配置管理策略

随着信息技术的迅猛发展&#xff0c;企业网络架构日趋复杂&#xff0c;交换机作为网络基础设施的核心设备&#xff0c;其稳定性和安全性对于企业业务的运行至关重要。在运维实践中&#xff0c;堆叠交换机&#xff08;Stacked Switches&#xff09;因其高可靠性、灵活扩展性等特…

SM2258G专用SSD开卡工具(三星闪存),后附工具下载

工具下载&#xff1a; https://download.csdn.net/download/weixin_43097956/89354302

「贪心算法」柠檬水找零

力扣原题链接&#xff0c;点击跳转。 假设你的手里没有钱。你要卖柠檬水&#xff0c;每杯5块钱。每个顾客有可能会给你5块钱、10块钱或20块钱&#xff0c;你要拿手中的钱找零。如何判断你能否成功找零呢&#xff1f; 如果一上来就有顾客花10块钱或20块钱&#xff0c;你手中没…

python中特殊的静态方法__new__

一、关于new方法 在Python中&#xff0c;__new__方法是一个特殊的静态方法&#xff0c;用于实例化对象。通常不需要直接调用__new__方法&#xff0c;Python会自动调用它来分配内存空间并返回一个新对象&#xff08;或者更具体地说&#xff0c;是对象的引用&#xff09;。然而&…

视频怎么转换成二维码图片?视频做成二维码播放的方法

怎样在电脑上制作可以播放视频的二维码呢&#xff1f;很多日常生活中&#xff0c;很多的场景或者物品都会有自己的二维码&#xff0c;其他人通过扫码就可以获取对应的内容。有很多场景下会把视频转换二维码&#xff0c;通过扫码在手机上查看视频内容&#xff0c;比如产品介绍、…

水表电表远程抄表是什么?

1.简述&#xff1a;水表电表远程抄表技术性 随着时代的发展&#xff0c;传统式手动抄表方法早已被更为高效、智能化的远程抄表系统所替代。水表电表远程抄表&#xff0c;说白了&#xff0c;就是利用互联网技术完成对水表和电表读数的远程数据采集管理方法&#xff0c;大大提升…

效果炸裂!使用 GPT-4o 快速实现LLM OS

▼最近直播超级多&#xff0c;预约保你有收获 —1— 什么是 LLM OS&#xff1f; 关于 LLM OS 的最初构想源自karpathy 在2023年11月11日发布的一条Twitter 动态&#xff0c;这是 LLM OS 概念的最早出处&#xff0c;如下图所示&#xff1a; LLM OS 主要有以下5个部分组成&#x…