windows 下 檔案屬性及目錄列表操作

2022-06-22 02:42:12 字數 2249 閱讀 2780

**

我們需要乙個結構體和幾個函式。這些函式和結構體在的標頭檔案中,結構體為struct _finddata_t ,函式為_findfirst、_findnext和_fineclose。

首先講這個結構體吧~ struct _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是乙個變數型別(長整型?相當於long int?),用來儲存時間的,我們暫時不用理它,只要知道,這個time_create變數是用來儲存檔案建立時間的就可以了。

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

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

_fsize_t size:檔案的大小。這裡的_fsize_t應該可以相當於unsigned整型,表示檔案的位元組數。

char name[_max_fname]:檔案的檔名。這裡的_max_fname是乙個常量巨集,它在標頭檔案中被定義,表示的是檔名的最大長度。

以此,我們可以推測出,struct _finddata_t ,大概的定義如下:

struct _finddata_t

;

前面也說了,這個結構體是用來儲存檔案資訊的,那麼如何把乙個硬碟檔案的檔案資訊「存到」這個結構體所表示的記憶體空間裡去呢?這就要靠_findfirst、_findnext和_fineclose三個函式的搭配使用了。

首先還是對這三個函式一一介紹一番吧……

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

返回值:如果查詢成功的話,將返回乙個long型的唯一的查詢用的控制代碼(就是乙個唯一編號)。這個控制代碼將在_findnext函式中被使用。若失敗,則返回-1。

引數:

filespec:標明檔案的字串,可支援萬用字元。比如:*.c,則表示當前資料夾下的所有字尾為c的檔案。

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

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

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

引數:

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

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

int _findclose( long handle );

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

引數:

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

大家看到這裡,估計都能猜到個大概了吧?先用_findfirst查詢第乙個檔案,若成功則用返回的控制代碼呼叫_findnext函式查詢其他的檔案,當查詢完畢後用,用_findclose函式結束查詢。恩,對,這就是正確思路。下面我們就按照這樣的思路來編寫乙個查詢c:\windows資料夾下的所有exe可執行檔案的程式。

#include #include const char *to_search="c:\\windows\\*.exe";        //欲查詢的檔案,支援萬用字元

int main()

_findclose(handle);

system("pause");

return 0;

}

Linux下檔案屬性詳解

root localhost ls l總計 160 rw r r 2 root root 762 07 29 18 19 aexit rw r r 2 root root 762 07 29 18 19 exit 此時exit 和aexit稱為互為硬鏈結。同指向乙個檔案,無論是修改哪乙個檔案,另乙個...

檔案屬性和目錄屬性

檔案屬性 使用 stat 函式可以獲取 int stat const char pathname,struct stat statbuf 裡面有乙個重要的結構體 struct stat 在 man 2 stat 中可以檢視 struct stat 結構體中的 st mode 用來判斷檔案型別,該檔案...

Linux目錄結構及檔案屬性介紹

說明 命令及測試經來自 centos6.5版本測試結果。1 核心內容描述。1 linux的所有目錄結構是乙個有層次的倒掛這的樹形目錄結構。2 根 是所有目錄的頂點。3 目錄結構和分割槽裝置沒有關係。4 所有目錄結構是按照一定的類別有規律的組織和命令的。5 dev null cat dev null ...