C C 遍歷檔案和目錄

2021-08-07 12:19:30 字數 2245 閱讀 6721

c/c++遍歷資料夾要用到_finddata_t結構體,函式_findfirst、_findnext和_fineclose,它們都定義在標頭檔案中,下面介紹具體如何使用.

結構體_finddata_t是用來儲存檔案各種資訊的,其中成員變數分別為

unsigned atrrib:檔案屬性的儲存位置,它儲存乙個unsigned單元,用於表示檔案的屬性。檔案屬性是用位表示的,主要有以下一些:_a_arch(存檔)、_a_hidden(隱 藏)、_a_normal(正常)、_a_rdonly(唯讀)、_a_subdir(資料夾)、_a_system(系統)。這些都是 在中定義的巨集,可以直接使用,而本身的意義其實是乙個無符號整型(只不過這個整型應該是2的幾次冪,從而保證只有一位為1,而其 他位為0)。既然是位表示,那麼當乙個檔案有多個屬性時,它往往是通過位或的方式,來得到幾個屬性的綜合。例如唯讀+隱藏+系統屬性,應該 為:_a_hidden| _a_rdonly |_a_system 。

time_t time_create:儲存檔案建立的時間。

time_t time_access:儲存檔案最後一次被訪問的時間。

time_t time_write:儲存檔案最後一次被修改的時間。

_fsize_t size:儲存檔案的大小。

char name[_max_fname]:儲存檔案的檔名。

_findfirst(char*filespec,struct_finddata_t*fileinfo);

返回值:如果查詢成功的話,將返回乙個唯一查詢用的控制代碼,這個控制代碼在_findnext函式中 被使用,若失敗,將返回1;

filespec:檔案的路徑(字串?)

char *filename = "f:\\slice_bw\\*.png";

struct _finddata_t fileinfo;

long handle;

handle = _findfirst(filename, &fileinfo);

fileinfo:用來存放檔案資訊的結構體指標,結構體必須在呼叫次函式前宣告。不過不用初始化,只要分配記憶體空間就可以,函式成功後,函式會把找到的檔案資訊放入這個結構體中。

_findnext(long handle,struct_findata_t*fileinfo);

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

fileinfo:檔案資訊結構體的指標,找到檔案後,函式將該檔案資訊放入此結構體中。

while (!_findnext(handle, &fileinfo))
int _findclose( long handle );

返回值:成功返回0,失敗返回-1。

引數:

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

_findclose(handle);
先用_findfirst查詢第乙個檔案,若成功則用返回的控制代碼呼叫_findnext函式查詢其他的 檔案,當查詢完畢後用,用_findclose函式結束查詢。

#include

#include

using

namespace

std;

void main()

qt中的遍歷方法:

path=qfiledialog::getexistingdirectory(null, tr("選擇資料夾"),"d:\\",qfiledialog::showdirsonly);

qdir *dir=

new qdir(path);

qstringlist filter;

//filter<<"*.dat";

//dir->setnamefilters(filter);

qlist

*fileinfo=

new qlist(dir->entryinfolist(filter));

注釋掉的兩行是用來檔案過濾用的,如果你要指定檔案字尾名在 filter<<」*.dat」 寫就好了

檔案數目:fileinfo->count();

檔名稱:fileinfo->at(i).filename();

檔案路徑(包含檔名):fileinfo->at(i).filepath();

也可參考:

C C 遍歷目錄下的所有檔案

1.遍歷某個目錄下的所有檔案 遍歷某個目錄下的所有檔案,並輸出檔名和檔案大小。include include include void listfiles const char dir int main void listfiles const char dir doelse while findn...

遍歷整個目錄樹的檔案和目錄

在開發中我們常常需要遍歷整個目錄樹,這是我們寫乙個這樣的工具類,以後就方便多了,這個類中可以通過使用local 方法產生由本地目錄中的檔案構成的file物件陣列,或者通過使用walk 方法產生給定目錄下的由整個目錄樹中所有檔案構成的list.例子 輔助列印的工具類 public class ppri...

Linux shell 遍歷資料夾檔案和目錄的指令碼

寫乙個遍歷資料夾目錄和檔案的指令碼,預設搜尋檔案,加上 d 引數搜尋目錄,可以設定搜尋深度,引數設定模仿find 命令,當然效率沒有find命令高,日常使用還是使用find命令,此指令碼僅做參考 bin bash function isnumber is dir 0 判斷是否是搜尋目錄 for p ...