Others 遍歷目錄下的所有檔案

2021-09-25 07:20:51 字數 3183 閱讀 6613

最近在做一些檔案查詢相關的工具,所以需要用到遍歷目錄下的檔案,本篇部落格主要介紹如何使用c++遍歷乙個目錄下的所有檔案(包括目錄和檔案)

_finddata_t是乙個用來儲存檔案各種資訊的結構體,包含在標頭檔案io.h中。具體定義如下:

struct _finddata_t 

;

其中各成員變數的含義如下

介紹了_finddata_t結構體,下面介紹一下三個和它搭配使用的介面

功能搜尋與指定的檔名稱匹配的第乙個例項

long

_findfirst

(char

* filespec,

struct _finddata_t* fileinfo)

;引數:

filespec:標明檔案的字串,可支援萬用字元。

fileinfo:用來存放檔案資訊的結構體的指標。

返回值:

查詢成功,返回乙個long型的唯一的查詢用的控制代碼。失敗返回-

1。

注意

int

_findnext

(long handle,

struct _finddata_t* fileinfo)

;引數:

handle:控制代碼,由_findfirst函式返回的控制代碼。

fileinfo:用來存放檔案資訊的結構體指標。

返回值:

成功返回0,失敗返回-

1。

功能結束查詢

int

_findclose

(long handle)

;引數:

handle:_findfirst返回的控制代碼。

返回值:

成功返回0,失敗返回-

1。

先來看一下要遍歷的目錄

);// 結束查詢

_findclose

(handle);}

void

listdirtest()

cout << endl;

// 列印目錄下的目錄檔案

從上述結果,我們注意到,該程式只能遍歷乙個目錄下的所有檔案,而不會去遍歷目錄下的目錄檔案中的檔案,下面我們來完善一下程式,可以遍歷乙個目錄下的所有檔案,包括檔案下的目錄檔案中的檔案。

#include

#include

#include

#include

#include

using std::cout;

using std::endl;

void

listdir

(const std::string& path, std::vector<:string>

& subfiles,

std::vector<:string>

& subdirs)do}

else

}while

(_findnext

(handle,

&file)==0

);// 結束查詢

_findclose

(handle);}

void

listdirtest()

// 列印目錄下的檔案

cout <<

"files: "

<< subfiles.

size()

<< endl;

for(size_t i =

0; i < subfiles.

size()

;++i)

cout << endl;

// 列印目錄下的目錄檔案

遍歷目錄下的所有檔案

下面這段 演示了查詢乙個目錄下所有檔案的過程,將檔名存放在result.txt檔案中。void cmydlg oncollectallfilename myfile.writestring lpctstr myfinder.getfilepath t n mylist.removehead myfi...

boost遞迴遍歷獲得特定目錄下的所有資料夾名

在windows作業系統下可以使用微軟的檔案查詢功能 findfirst 或 findfirsti64 和 findnext 或者 findnexti64 配合 finddata t 或者 finddatai64 t 但是無法脫離windows使用。如果需要使用寬字元的查詢,可以在下劃線後加入w 如...

shell遍歷目錄下所有檔案

filelist ls home work file for file in filelist do echo file done 一定要切記filelist 後邊的那個引號不是單引號,而是tab鍵上邊的那個鍵,或者說是1左邊的那個鍵。否則的話不起作用。唉,自己在上吃虧了好長時間。汗!如果ls後面的...