使用mfc如何在整個磁碟硬碟中查詢檔案?
在ansi c中檔案查詢通過findfirst和findnext函式進行。在win32中提供了專門的檔案查詢的函式,
handle findfirstfile(在開始檔案查詢時先呼叫findfirstfile,同時提供乙個需要查詢的檔名,該檔名中可以有萬用字元號* ?,而lpfindfiledata是作為輸出引數,該引數的具體內容後面再講。如果查詢失敗將返回 invalid_handle_value,如果查詢成功函式將返回乙個控制代碼,並且有系統填充lpfindfiledata引數所指向的結構。在第一次查詢成功後利用返回的控制代碼和lpfindfiledata引數來呼叫findnextfile,如果能夠找到下乙個匹配的檔案函式會返回true,否則返回false。在查詢結束後呼叫findclose關閉控制代碼。示範**如下: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
);
win32_find_data ffd ;在檔案查詢中核心部分就是 win32_find_data 結構,在使用這個結構時請記住不要手工修改這個結構中的任何資料,結構對於開發人員來將只能作為乙個唯讀資料,所有欄位都會由系統填寫,結構內容如下:handle hfind = findfirstfile("c://windows//*.txt",&ffd);
if (hfind != invalid_handle_value)
findclose(hfind);
}
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環境下操作。以下是詳細操作...