主要用到_finddata_t結構體,和_findfirst、_findnext、_findclose三個函式。
他們都屬於io.h標頭檔案。
1、結構體:用來儲存檔案各種資訊
struct _finddata_t ;
(1)unsigned atrrib: 檔案屬性的儲存位置。它儲存乙個unsigned單元,用於表示檔案的屬性。
_a_arch(存檔)
_a_hidden(隱藏)
_a_normal(正常)
_a_rdonly(唯讀)
_a_subdir(資料夾)
_a_system(系統)
之間可以用 | 運算來組合表示乙個檔案的屬性。
接著是三個表示時間的變數:
(2)time_t time_create: 用來儲存檔案建立時間的,time_t 型別本質是就是乙個整型。
(3)time_t time_access: 檔案最後一次被訪問的時間。
(4)time_t time_write: 檔案最後一次被修改的時間。
然後是檔案大小和檔名:
(5)_fsize_t size: 檔案的大小。這裡的_fsize_t是unsigned long型別,表示檔案的位元組數。
(6)char name[260]: 檔案的檔名。
2、三個函式
(1)long _findfirst( char *filespec, struct _finddata_t *fileinfo );
返回值:
如果查詢成功的話,將返回乙個long型的唯一的查詢用的控制代碼(就是乙個唯一編號)。這個控制代碼將在_findnext函式中被使用。若失敗,則返回-1。
引數:filespec:標明檔案的字串,可支援萬用字元。比如:*.c,則表示當前資料夾下的所有字尾為c的檔案。
fileinfo :這裡就是用來存放檔案資訊的結構體的指標。這個結構體必須在呼叫此函式前宣告,不過不用初始化,只要分配了記憶體空間就可以了。
函式成功後,函式會把找到的檔案的資訊放入這個結構體中。
(2)int _findnext( long handle, struct _finddata_t *fileinfo );
返回值:
若成功返回0,否則返回-1。
引數:handle:即由_findfirst函式返回回來的控制代碼。
fileinfo:檔案資訊結構體的指標。找到檔案後,函式將該檔案資訊放入此結構體中。
(3)int _findclose( long handle );
返回值:成功返回0,失敗返回-1。
引數: handle :_findfirst函式返回回來的控制代碼。
3、
#include #include using namespace std;
using namespace cv;
bool get_filelist_from_dir(string path, vector& files)
while (_findnext(hfile, &fileinfo) == 0);
_findclose(hfile);
return true;
} else
return false;
}void main()
for (int i = 0; i < file_list.size(); i++)
}
4、
關於intptr_t
_findnext()除錯中斷,發生訪問錯誤,錯誤定位到ntdll.dll
關於c_str()
遍歷資料夾下所有檔案
對於遍歷資料夾來說,其實並不麻煩,使用file轉化位址物件,再用file組獲取內容,其實google都差不多做好了,我就懶得廢話了,直接上 public listlist new arraylist 遍歷所有檔案 public listgetfilelist string path else ret...
C 遍歷資料夾下的所有檔案
資料分多個檔案儲存,讀取資料就需要對多個檔案進行操作。首先就需要定位到檔案的名字,之後再對檔案進行相應的讀寫操作。多次涉及多檔案的讀寫操作,現將這個實現總結一下,方便自己和他人使用。具體 如下 cpp view plain copy include stdafx.h include include ...
shell 遍歷資料夾下所有檔案
linux 下有tree命令可以檢視指定資料夾下的所有檔案 需要安裝tree,ubuntu下sudo apt get install tree 要實現這樣的功能,可以有多種實現方式,指令碼語言就是一種方便快捷的方式,python,shell都可以很容易實現。最近在學習makefile編寫,其中有很多...