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.pswp.cn/bicheng/15214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15214.shtml
英文地址,請注明出處:http://en.pswp.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…