C/C++遍曆目錄下的所有檔案(Windows篇,超詳細)

來源:互聯網
上載者:User

標籤:原因   span   logs   資料   nba   ade   direct   color   備份   

註:本文討論的是怎麼用Windows API遍曆目錄下的所有檔案。除Windows API,還有一種Windows/Linux通用的方式,使用<io.h>。

 

WIN32_FIND_DATA結構

 

遍曆目錄下的檔案需要用到WIN32_FIND_DATA結構。實際上有兩種結構:WIN32_FIND_DATAA和WIN32_FIND_DATAW。A和W分別代表ASCII和寬字元(Unicode)。定義UNICODE宏時,WIN32_FIND_DATA指WIN32_FIND_DATAW;否則指WIN32_FIND_DATAA。

 

下面是兩個結構的定義(minwinbase.h,VS2015):

 

typedef struct _WIN32_FIND_DATAA {    DWORD dwFileAttributes;    FILETIME ftCreationTime;    FILETIME ftLastAccessTime;    FILETIME ftLastWriteTime;    DWORD nFileSizeHigh;    DWORD nFileSizeLow;    DWORD dwReserved0;    DWORD dwReserved1;    _Field_z_ CHAR   cFileName[ MAX_PATH ];    _Field_z_ CHAR   cAlternateFileName[ 14 ];#ifdef _MAC    DWORD dwFileType;    DWORD dwCreatorType;    WORD  wFinderFlags;#endif} WIN32_FIND_DATAA;typedef struct _WIN32_FIND_DATAW {    DWORD dwFileAttributes;    FILETIME ftCreationTime;    FILETIME ftLastAccessTime;    FILETIME ftLastWriteTime;    DWORD nFileSizeHigh;    DWORD nFileSizeLow;    DWORD dwReserved0;    DWORD dwReserved1;    _Field_z_ WCHAR  cFileName[ MAX_PATH ];    _Field_z_ WCHAR  cAlternateFileName[ 14 ];#ifdef _MAC    DWORD dwFileType;    DWORD dwCreatorType;    WORD  wFinderFlags;#endif} WIN32_FIND_DATAW;

 

關於_MAC宏的部分可以忽略, 這是有曆史原因的——曾今Microsoft是Mac的最大開發人員,為了方便Windows上的應用移植到Mac上,就使用_MAC宏,如果是Mac作業系統_MAC就是有定義的。(根據Stack Overflow)因為這裡說的是Windows,就先把這個放一邊。

 

下面是每個結構成員的含義:

 

dwFileAttributes

 

一個檔案的檔案屬性。

 

檔案屬性常量:

 

FILE_ATTRIBUTE_ARCHIVE(0x20):檔案或目錄是檔案檔案或目錄。應用程式使用這種屬性標記檔案,表示備份或移除。
FILE_ATTRIBUTE_COMPRESSED(0x800):檔案或目錄是壓縮的。對於一個檔案,其中的所有資料都是壓縮的。對於一個目錄,對於新建立的檔案和子目錄預設壓縮。
FILE_ATTRIBUTE_DIRECTORY(0x40):這個值保留給系統使用。
FILE_ATTRIBUTE_DIRECTORY(0x10):標記一個目錄的控制代碼。
FILE_ATTRIBUTE_ENCRYPTED(0x10):檔案或目錄是加密的。對於一個檔案,所有的資料流都被加密了。對於一個目錄,對於新建立的檔案和子目錄預設加密。
FILE_ATTRIBUTE_HIDDEN(0x2):檔案或目錄是隱藏的。遍曆檔案夾時一般不考慮它們。
FILE_ATTRIBUTE_INTEGRITY_STREAM(0x8000):

 

(TO BE CONTINUED, DO NOT REPRODUCE)

C/C++遍曆目錄下的所有檔案(Windows篇,超詳細)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.