最近做的乙個專案,需要在vc下遍歷指定路徑的所有檔案,和之前的delphi所採用的方式一樣:遞迴呼叫。直接貼**
bool cldscanfiledlg::doscan( const cstring& v_strdir )
; wchar_t chsubdir[max_long_path] = ;
wchar_t chfilepath[max_long_path] = ;
wchar_t chtemp[max_long_path] = ;
wchar_t chsql[max_buff_length] = ;
struct _wfinddata_t c_file;
long hfile;
int ifilestatus = 0;
static int iscanfilenum = 0;
static int iencfilenum = 0;
static int idecfilenum = 0;
cstring strinfo =l"";
cstringlist dirlist;
cstringlist failedpathlist;
cldsqlite* pdb = new cldsqlite;
// 讀取當前時間
systemtime systime;
cstring strscantime = l"";
::getlocaltime(&systime);
strscantime.format(l"%4d%02d%02d%02d%02d%02d", systime.wyear, systime.wmonth,
systime.wday, systime.whour, systime.wminute, systime.wsecond);
// 更新目錄掃瞄狀態
cstring str = l"pathconfigdb";
setcurrentdatabase(str);
pdb->init(m_szdbpath, true);
cstring strdirtemp(v_strdir);
strdirtemp.replace(l"'", l"''"); // 替換單引號'為''
// 更新配置庫,掃瞄路徑狀態為1 代表正在掃瞄
swprintf_s(chsql, l"update scan_status set scan_status = 1, scan_time = '%s' where scan_path='%s';", strscantime, strdirtemp);
pdb->excutesql(chsql);
pdb->release();
// 初始化當前掃瞄目錄db檔案鏈結
this->setcurrentdatabase(v_strdir);
pdb->init(m_szdbpath, false);
dirlist.addhead(v_strdir);
while (!dirlist.isempty())
if (c_file.attrib & _a_subdir)
dirlist.addhead(chsubdir);
}else
else
}// 掃瞄檔案總數更新
iscanfilenum++;
strinfo.format(l"%d", iscanfilenum);
getdlgitem(idc_static_scan)->setwindowtext(chfilepath);
getdlgitem(idc_static_scan_num)->setwindowtext(strinfo);
//獲取檔案加解密狀態
/*m_strlog.format(l"the scan file is :%s", chfilepath);
ifilestatus = this->filedecryptstatus(chfilepath);
if (ifilestatus != 1)
//替換特殊單引號
cstring strtemp(chfilepath);
strtemp.replace(l"'", l"''");
//判斷該資料是否存在
swprintf_s(chsql, l"select count(*) from file_info where file_path='%s';", strtemp);
if (pdb->dataexits(chsql) <= 0)
// sql語句批量執行,預設累計滿100條進行插入
swprintf_s(chsql, l"insert into file_info values ('%s', %d, 0, 2, 0, '%s');", strtemp, ifilestatus, strscantime);
if (m_strfplist.getsize() < m_ibatchinsertnum)
else
}//sleep(300);}}
_findclose(hfile);
} }//防止最後剩餘檔案未插入
if (m_strfplist.getsize() != 0)
//釋放db鏈結
pdb->release();
delete pdb;
pdb = null;
return true;
}
VC 根據檔案路徑獲取裝置路徑及裝置名
專案中間遇到乙個問題,需要判斷檔案在哪個裝置上,翻了一遍msdn,找到了下面的解決方案。有人可能會覺得 splitpath就可以了,這是不行的,因為 splitpath不能正確獲取掛載到目錄的裝置。解決思路方法是getvolumepathname獲取裝置根路徑,然後呼叫getvolumenamefo...
VC遍歷資料夾下所有檔案和資料夾
2010 03 25 16 59 一 先介紹乙個結構win32 find data typedef struct win32 find data win32 find data win32 find data ffd handle hfind findfirstfile c ffd 二 函式find...
VC遍歷資料夾下所有檔案和資料夾
一 先介紹乙個結構win32 find data typedef struct win32 find data win32 find data 可以通過 findfirstfile 函式,根據檔案路徑把待操作檔案的相關屬性讀取到 win32 find data 結構中去 win32 find dat...