GetFileAttributesEx读取文件相应属性
文章目錄
- 簡介描述
- 結構體如下
- GetFileAttributesEx函數講解
- 第一個參數
- 第二個參數
- 第三個參數
- 返回值
- 部分代碼講解
- 代碼實現:
簡介描述
首先呢,介紹一下文件屬性結構體,windows把一個文件的屬性用一個結構體來保存,也就下面這些東西會用一個結構體來保存
結構體如下
typedef struct _WIN32_FILE_ATTRIBUTE_DATA {DWORD dwFileAttributes;//判斷一個目標為文件夾還是文檔,//目標為文檔是dwFileAttributes的值為FILE_ATTRIBUTE_ARCHIVE(32),//而為文件夾時值為FILE_ATTRIBUTE_DIRECTORY(16)FILETIME ftCreationTime; //創建時間FILETIME ftLastAccessTime;//修改時間FILETIME ftLastWriteTime;//訪問時間DWORD nFileSizeHigh;DWORD nFileSizeLow; } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;文件里的這個ftCreationTime它是以一串數字(FILETIME類型的數據)來保存的,具體是代表FILETIME類型的創建文件時的世界標準時間 數字,所以需要把它轉換成本地的FILETIME時間,最后再把本地的FILETIME時間轉換成SYSTEM時間,這個才能讓我們能看懂。
FILETIME: 文件時間結構----由高位和低位組成,指針可用LPFILETIME 或 PFILETIME
typedef struct _FILETIME{DWORD dwLowDateTime;DWORD dwHighDateTime;} FILETIME, *PFILETIME, *LPFILETIME;SYSTEMTIME :系統時間結構----指針可用PSYSTEMTIME 或 LPSYSTEMTIME
typedef struct _SYSTEMTIME{WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds;} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;GetFileAttributesEx函數講解
GetFileAttributesEx(L"讀取文件屬性代碼.cpp", GetFileExInfoStandard, &wafd第一個參數
第一個參數傳入文件名即可,如果是Unicode編譯環境下(即寬字節),再加一個L即可。
第二個參數
當第二個參數傳入GetFileExInfoStandard后,第三個參數就可以傳入_WIN32_FILE_ATTRIBUTE_DATA結構體對象
第三個參數
傳入_WIN32_FILE_ATTRIBUTE_DATA結構體對象,就可以獲取為第一個文件名的文件屬性信息
返回值
如果成功,返回值包含文件或目錄的屬性。如果失敗,返回值是INVALID_FILE_ATTRIBUTES。
部分代碼講解
FileTimeToLocalFileTime(lptime, &ftlocal);這個函數是把UTC(世界標準時間)的FILETIME時間轉換為對應的本地的FILETIME時間
FileTimeToSystemTime(&ftlocal, &st);這個函數是把對應的本地的FILETIME時間轉換成SYSTEM時間,然后再直接輸出相應的時間點
這里稍微補充一下一個相關函數:
LocalFileTimeToFileTime函數將本地的FILETIME時間轉換為對應的UTC的FILETIME時間。
代碼實現:
#include <iostream> #include<windows.h> DWORD ShowFileTime(PFILETIME lptime) {FILETIME ftlocal;SYSTEMTIME st;FileTimeToLocalFileTime(lptime, &ftlocal);FileTimeToSystemTime(&ftlocal, &st);printf("%d年%#02d月%#02d日,%#02d:%#02d:%#02d\n", st.wYear, st.wMonth, st.wDay,st.wHour,st.wMinute,st.wSecond);return 0; } int main() {WIN32_FILE_ATTRIBUTE_DATA wafd;if (!GetFileAttributesEx(L"讀取文件屬性代碼.cpp", GetFileExInfoStandard, &wafd)) {printf("獲取文件屬性失敗:%d\n",GetLastError());return 1;}printf("創建時間:");ShowFileTime(&wafd.ftCreationTime);printf("修改實際:");ShowFileTime(&wafd.ftLastAccessTime);printf("訪問時間:");ShowFileTime(&wafd.ftLastWriteTime); }
備注:
2021年堅持學寫博客第4天(學習兩個windows API) 尋夢SS
明日目標:
windows核心編程API函數
總結
以上是生活随笔為你收集整理的GetFileAttributesEx读取文件相应属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MessageBoxA 和Messag
- 下一篇: WriteFile和GetSystemD