C++中_finddata_t結構體存儲文件信息詳解

Struct _finddata_t結構體可以用來處理各種文件的文件信息,使用該結構體需要添加頭文件io.h。

它的定義如下所示


對于該結構體中的各個變量的定義如下所示:

unsigned attrib:無符號整形、位表示。它的作用是表示文件的屬性,一般來說,文件的屬性有如下幾種:_A_ARCH(存檔)、 _A_HIDDEN(隱藏)、_A_NORMAL(正常)、_A_RDONLY(只讀)、_A_SUBDIR(文件夾)、_A_SYSTEM(系統(tǒng))

time_t time_create:表示從1970年1月1日0時0分0秒到現(xiàn)在時刻的秒數(shù)。

time_t time_access:文件最后一次被訪問的時間

time_t time_write:文件最后一次被修改的時間

_fsize_t size:文件的大小。

char name[_MAX_FNAME]:文件的文件名,這里的_MAX_FNAME是一個常量宏,它在頭文件中被定義,表示的是文件名的最大長度。

為了使用這個結構體將文件的信息存儲到該結構體的內(nèi)存空間,需要搭配使用_findfirst()、_findnext()、_findclose()三個函數(shù)使用。


首先用_findfirst函數(shù)查找第一個文件,若成功則用返回的句柄,調(diào)用_findnext函數(shù)查找其他的文件,當查找文件完成之后,就會用_findclose函數(shù)結束查找。

long _findfirst( char *filespec, struct _finddata_t *fileinfo );

hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo))

p.assign(path) 給P賦path的值? ?后 連接 “\\*” 字符串

c_str()函數(shù)返回一個指向正規(guī)C字符串的指針

這是為了與c語言兼容,在c語言中沒有string類型,故必須通過string類對象的成員函數(shù)c_str()把string 對象轉(zhuǎn)換成c中的字符串樣式。


返回值:如果查找成功,那么就返回一個long型的唯一查找用的句柄。這個句柄會在_findnext函數(shù)中被使用。失敗的話就會返回0.

參數(shù):filespec:標明文件的字符串。例如:*.c?,則表示當前文件夾下的所有后綴為C的文件。

?????????? fileinfo:這里就是用來存放文件信息的結構體的指針。函數(shù)成功后,函數(shù)會把找到的文件的信息放入這個結構體所分配的內(nèi)存空間中。

int _findnext( long handle, struct _finddata_t *fileinfo );

返回值:若成功返回0,否則返回-1。

參數(shù):handle:即由_findfirst函數(shù)返回回來的句柄。

int _findclose( long handle );

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

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容