使用vc MFC如何在整個磁碟硬碟中查詢檔案?

2022-07-17 10:00:12 字數 2437 閱讀 2468

使用mfc如何在整個磁碟硬碟中查詢檔案?

在ansi c中檔案查詢通過findfirst和findnext函式進行。在win32中提供了專門的檔案查詢的函式,

handle findfirstfile(

lpctstr lpfilename, // file name

lpwin32_find_data lpfindfiledata // data buffer

);bool findnextfile(

handle hfindfile, // search handle

lpwin32_find_data lpfindfiledata // data buffer

);bool findclose(

handle hfindfile // file search handle

);

在開始檔案查詢時先呼叫findfirstfile,同時提供乙個需要查詢的檔名,該檔名中可以有萬用字元號* ?,而lpfindfiledata是作為輸出引數,該引數的具體內容後面再講。如果查詢失敗將返回 invalid_handle_value,如果查詢成功函式將返回乙個控制代碼,並且有系統填充lpfindfiledata引數所指向的結構。在第一次查詢成功後利用返回的控制代碼和lpfindfiledata引數來呼叫findnextfile,如果能夠找到下乙個匹配的檔案函式會返回true,否則返回false。在查詢結束後呼叫findclose關閉控制代碼。示範**如下:

win32_find_data ffd ;

handle hfind = findfirstfile("c://windows//*.txt",&ffd);

if (hfind != invalid_handle_value)

findclose(hfind);

}

在檔案查詢中核心部分就是 win32_find_data 結構,在使用這個結構時請記住不要手工修改這個結構中的任何資料,結構對於開發人員來將只能作為乙個唯讀資料,所有欄位都會由系統填寫,結構內容如下:

typedef struct _win32_find_data  win32_find_data, *pwin32_find_data;
dwfileattributesw為檔案屬性,可以是以下資料的按位組合。

win32提供的檔案查詢功能無法對子目錄進行巢狀查詢,而只能對你指定的目錄進行查詢,如果希望查詢子目錄下所有檔案則需要自己開發子目錄查詢功能。例如下面的**可以遍歷指定目錄下的所有目錄,相當與命令 dir c:/ /d /s

//呼叫方式 dir_a_s("c://");

void dir_a_s(lpcstr pszdir)

while(findnextfile(hfind,&ffd))

}findclose(hfind);

}}

檔案查詢還有乙個其他的用法就是用來確定檔案是否存在,你可以使用下面的函式。

bool isfileexist(lpcstr pszfilename)

}

如果你使用mfc進行開發,可以使用cfilefind類來進行檔案查詢,mfc完整的封裝了檔案查詢的功能。用於檔案查詢的成員函式為:

virtual bool findfile( lpctstr pstrname = null, dword dwunused = 0 ); 開始查詢

virtual bool findnextfile( ); 查詢檔案,對於第乙個檔案和下乙個檔案都通過這個函式進行查詢

//下面是一段檔案查詢演示**

cfilefind finder;

strwildcard += _t("//*.*");

bool bworking = finder.findfile(strwildcard);

while (bworking)

finder.close();

同時在cfilefind中封裝了很多判斷函式用於確定檔案的各種屬性,這些函式是

getlength 得到檔案長度

getfilename 得到檔名

getfilepath 得到檔案路徑名和檔名

getcreationtime / getlastaccesstime / getlastwritetime 得到檔案時間

isdots 判斷檔案是否為 . 或 ..

isreadonly / isdirectory / iscompressed / issystem / ishidden / istemporary / isnormal /isarchived 得到檔案屬性

//下面是乙個用mfc中cfilefind類實現的目錄遍歷功能

// 呼叫方式為 mfc_dir_a_s("c://")

void mfc_dir_a_s(lpcstr pszdir)

} ff.close();//關閉

}}

如何在Linux中複製整個目錄

命令很簡單,這裡我提供兩個示例來說明如何在linux中複製整個目錄。cp r sourcedir targetdir 例如,1 將任何內容從當前目錄複製到 usr local download cp r usr local download2 複製整個目錄 包括內容 usr local fromdo...

無線城市如何在整個城市實現WiFi覆蓋

無線城市現在在許多領域實施,例如武漢和杭州。所謂的無線城市意味著無論在城市的哪個地方,都可以連線無線網路。這為現在依賴網際網路的年輕人帶來了福音。如今,人們不得不在去的時候拿出手機,刷微博或看戲。如果沒有網路,他們就不想等待。而且,當前的資料流量成本並不是特別低,您不必擔心使用資料流量來趕上。因此,...

如何在Windows DOS環境下格式化硬碟

在windows環境下格式化硬碟的方法比較多,本文介紹如何在dos環境下徹底格式化某硬碟。該方法主要適合於未分割槽或裡面已經有不同作業系統的硬碟,因為這類盤插在電腦上,在裝置管理器裡面可以看到,但你在系統裡找不到該碟符是無法識別的,這時你如果想徹底格式化該硬碟,可以在dos環境下操作。以下是詳細操作...