C++遍歷文件夾下的所有文件
數(shù)據(jù)分多個(gè)文件存儲(chǔ),讀取數(shù)據(jù)就需要對(duì)多個(gè)文件進(jìn)行操作。首先就需要定位到文件的名字,之后再對(duì)文件進(jìn)行相應(yīng)的讀寫操作。多次涉及多文件的讀寫操作,現(xiàn)將這個(gè)實(shí)現(xiàn)總結(jié)一下,方便自己和他人使用。具體代碼如下:
#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include<vector>
#include <Windows.h>
#include <fstream>
#include <iterator>
#include <string>
using namespace std;
#define MAX_PATH 1024 //最長(zhǎng)路徑長(zhǎng)度
/*----------------------------
* 功能 : 遞歸遍歷文件夾,找到其中包含的所有文件
*----------------------------
* 函數(shù) : find
* 訪問 : public
*
* 參數(shù) : lpPath [in] 需遍歷的文件夾目錄
* 參數(shù) : fileList [in] 以文件名稱的形式存儲(chǔ)遍歷后的文件
*/
void find(char* lpPath,std::vector<const std::string> &fileList)
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(true)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
char szFile[MAX_PATH];
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,(char* )(FindFileData.cFileName));
find(szFile,fileList);
}
}
else
{
//std::cout << FindFileData.cFileName << std::endl;
fileList.push_back(FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
int main()
{
std::vector<const std::string> fileList;//定義一個(gè)存放結(jié)果文件名稱的鏈表
//遍歷一次結(jié)果的所有文件,獲取文件名列表
find("XXXX具體文件夾目錄",fileList);//之后可對(duì)文件列表中的文件進(jìn)行相應(yīng)的操作
//輸出文件夾下所有文件的名稱
for(int i = 0; i < fileList.size(); i++)
{
cout << fileList[i] << endl;
}
cout << "文件數(shù)目:" << fileList.size() << endl;
return 0;
}
總結(jié)
以上所述是小編給大家介紹的C++遍歷文件夾下所有文件,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
mac 配置Clion運(yùn)行C和C++的環(huán)境的詳細(xì)步驟
這篇文章主要介紹了mac 配置Clion運(yùn)行C和C++的環(huán)境的步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
C語言實(shí)現(xiàn)職工工資管理系統(tǒng)的示例代碼
這篇文章主要為大家詳細(xì)介紹了C語言如何實(shí)現(xiàn)職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語言之實(shí)現(xiàn)控制臺(tái)光標(biāo)隨意移動(dòng)的實(shí)例代碼
下面小編就為大家?guī)硪黄狢語言之實(shí)現(xiàn)控制臺(tái)光標(biāo)隨意移動(dòng)的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼
在平時(shí)做頁面開發(fā)時(shí),有些時(shí)候會(huì)用到圓形進(jìn)度條,本文主要介紹了Qt之實(shí)現(xiàn)圓形進(jìn)度條的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
libevent庫的使用--定時(shí)器的使用實(shí)例
這篇文章主要介紹了libevent庫的使用--定時(shí)器的使用實(shí)例,有需要的朋友可以參考一下2013-12-12

