




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、.Windows平臺有一個WIN32_FIND_DATA結構,用來存儲文件的一些屬性(這里指的屬性和下面結構中文件屬性成員不同。這里的屬性是指下面結構的所有成員)。該結構的定義如下。typedef struct _WIN32_FIND_DATA DWORD dwFileAttributes; /文件屬性 FILETIME ftCreationTime; / 文件創(chuàng)建時間 FILETIME ftLastAccessTime; / 文件最后一次訪問時間 FILETIME ftLastWriteTime; / 文件最后一次修改時間 DWORD nFileSizeHigh; / 文件長度高32位 DW
2、ORD nFileSizeLow; / 文件長度低32位 DWORD dwReserved0; / 系統(tǒng)保留 DWORD dwReserved1; / 系統(tǒng)保留 TCHAR cFileName MAX_PATH ; / 長文件名 TCHAR cAlternateFileName 14 ; / 8.3格式文件名 WIN32_FIND_DATA, *PWIN32_FIND_DATA;可以使用FindFirstFile() 和 FindNextFile() 函數(shù)可以得到 文件(包括文件夾)的WIN32_FIND_DATA結構信息。FindFirstFile的原型如下:FindFirstFile()函
3、數(shù)中,第一個參數(shù)是一個字符串。可以是一個路徑名或者文件名,并且支持通配符 * 和 ?。比如想查找D盤下的所有文件,可以寫成D:*.* 或者 D:*。如果只想查找D盤下的txt文件,那么可以寫成D:*.txt。 第二個參數(shù)是指向WIN32_FIND_DATA結構體的一個指針。正如函數(shù)的名字FindFirstFile那樣, 該函數(shù)會查找第一個符合查找條件的文件(使用通配符可以有多少文件滿足查找條件)。然后把這個文件的一些信息寫入這個結構里面。如果第一個參數(shù)沒有使用通配符,而是一個文件名,那么將只能找到一個符合條件的文件。函數(shù)的返回值是一個句柄HANDLE,說白了也就是一個整型。這個返回值可以用來查
4、找下一個符合查找條件的文件。這就是下面的FindNextFile函數(shù)了。如果函數(shù)調用失敗,將返回INVALID_HANDLE_VALUEFindNextFile的原型如下第一個參數(shù)就是FindFirstFile函數(shù)的返回值。第二個參數(shù)和FindFirstFile一樣,在一個指針,用來存放被查找到的文件的一些信息。如果查找成功,函數(shù)返回非0值。否則返回0。可以調用GetLastError()函數(shù)來查看失敗原因。如果沒有符合要求的文件了,那么也將返回0。此時,調用GetLastError()函數(shù)將返回ERROR_NO_MORE_FILES。在使用完上面兩個函數(shù)后,要記得使用CloseFile(HA
5、NDLE hFindFile)函數(shù)來關閉這個句柄。上面三個函數(shù)需要包括windows.h頭文件.說了這么多,下面給出一個例子代碼。#include<iostream>#include<windows.h>using namespace std;int main()WIN32_FIND_DATA fileAttr;HANDLE handle;handle = FindFirstFile("D:*", &fileAttr);if( handle = INVALID_HANDLE_VALUE ) cout<<"invalid
6、handle value "<<GetLastError()<<endl;elsecout<<fileAttr.cFileName<<endl; /輸出查找到的文件名while( FindNextFile(handle, &fileAttr) )cout<<fileAttr.cFileName<<endl; /輸出每一個查找到的文件名if( GetLastError() = ERROR_NO_MORE_FILES )cout<<"查找完畢"<<endl;else
7、 cout<<"查找過程出現(xiàn)錯誤"<<endl;FindClose(handle);return 0;現(xiàn)在看一下WIN32_FIND_DATA結構的一些成員信息。首先看一下文件的大小信息。該信息用了兩個成員存儲。分別是:DWORD nFileSizeHigh; / 文件長度高32位 DWORD nFileSizeLow; / 文件長度低32位其中,單位是 字節(jié)數(shù)。由于nFileSizeHigh存儲的是文件長度的高位,所以當文件的大小小于MAXDWORD時,該成員的值為0。最后,可以用 (nFileSizeHigh * (MAXDWORD+1) + n
8、FileSizeLow 來計算文件大小。文件夾的大小是 0 ?,F(xiàn)在看一下與文件有關的時間屬性。有三個時間,創(chuàng)建時間、訪問時間、修改時間。三者都差不多。只需弄懂一個,其他兩個就自然知道怎么用了。從文章最前面的WIN32_FIND_DATA結構體可以看到其ftCreationTime 成員是一個FILETIME類型。聲明如下:一眼看過去,都不知道怎么使用。就像C語言標準庫里面的time()函數(shù)一樣,返回一個從1970年到現(xiàn)在的秒數(shù)。這個值很難使用。還好Windows還提供了另外一個結構 SYSTEMTIME。其聲明如下:這個結構看起來就有點像人使用的,剛才那個完全是機器使用的。同樣,Windows
9、提供了兩者相互轉換的函數(shù).兩個函數(shù)都需要對應結構體的指針。還有一個東西需要注意。通過FindFirstFile、FindNextFile獲取的WIN32_FIND_DATA結構。其FILETIME成員的值都是使用UTC時間,就是中學地理學的格林尼治時間。我們中國用東8區(qū)時間。所以我們還要在這些成員值的基礎上加上 8 小時。微軟不推薦我們直接對FILETIME結構進行 加上 或者減少 某個時間。如果我們要轉換成我們當?shù)氐臅r間(就是從UTC時間轉換成東8區(qū)時間),可以使用函數(shù) FileTimeToLocalFileTime。其聲明如下:另外,不能就地修改。就是說,第一個參數(shù)和第二個參數(shù)要指向不同的
10、內(nèi)存。給一個例子吧。#include<iostream>#include<windows.h>using namespace std;ostream& operator << (ostream& os, const SYSTEMTIME& t)os<<t.wYear<<"-"<<t.wMonth<<"-"<<t.wDay<<" "os<<t.wHour<<": "
11、;<<t.wMinute<<": "<<t.wSecond<<endl;return os;int main()WIN32_FIND_DATA fileAttr;HANDLE handle;SYSTEMTIME sysTime;FILETIME localFileTime;handle = FindFirstFile("D:*.txt", &fileAttr);if( handle = INVALID_HANDLE_VALUE )cout<<"invalid handle value "<<GetLastError()<<endl;elsecout<<fileAttr.cFileName<<" size is "<<(fileAttr.nFileSizeHigh * (MAXDWORD+1) + fileAttr.nFileSizeLow) <<endl;FileTimeToLocalFileTime(&a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機械工程材料與設計實踐試題庫
- 公司加盟連鎖經(jīng)營合同書
- 新聞媒體新聞稿件授權發(fā)布協(xié)議
- 互聯(lián)網(wǎng)金融風險評估與咨詢合作協(xié)議
- 物流運輸服務責任與免責條款協(xié)議書
- 網(wǎng)絡信息安全技術保障服務合同
- 循環(huán)經(jīng)濟項目投資合同
- 旅游景點運營合作合同
- 家庭裝修包工合同
- 工地建筑知識培訓課件
- 2025年安徽電氣工程職業(yè)技術學院單招職業(yè)傾向性測試題庫學生專用
- unctad -全球投資趨勢監(jiān)測 第 48 期 Global Investment Trends Monitor,No. 48
- 2025年福建省高職單招計算機類職業(yè)技能測試題及答案(供參考)
- 電鍍園區(qū)現(xiàn)場管理
- 七年級歷史下冊 第一單元 綜合測試卷(人教福建版 2025年春)
- 學校在鑄牢中華民族共同體意識教育工作情況報告
- 2025年安徽淮北市建投控股集團招聘筆試參考題庫含答案解析
- 《孤獨的小螃蟹》導讀課件
- 城市軌道交通行車組織 課件 項目3 車站行車作業(yè)組織
- 2025年聚焦全國兩會知識競賽題庫及答案(共100題)
- 《全面績效管理》課件
評論
0/150
提交評論