void DeleteFolder(CString dir) { if(FileIsDirectory(dir)) { //SHFILEOPSTRUCT Op; //ZeroMemory(&Op, sizeof(Op)); //删除文件夹 //Op.hwnd = NULL; //Op.wFunc = FO_DELETE; //Op.pFrom = dir; //Op.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION; //SHFileOperation(&Op); CFindFile tempFind; CString tempFileFind; tempFileFind.Format(_T("%s\\*.*"),dir); BOOL IsFinded = tempFind.FindFile(tempFileFind); while (IsFinded) { IsFinded = tempFind.FindNextFile(); if(!tempFind.IsDots()) { if(tempFind.IsDirectory()) DeleteFolder(tempFind.GetFilePath()); else DeleteFile(tempFind.GetFilePath()); } } tempFind.Close(); RemoveDirectory(dir); } }
bool CClientApp::EnumAllFiles(string sFolder) { if ( sFolder.length() == 0 ) return false; bool bRet = false; CFindFile fFind; string sFindStr = sFolder + "\\*.*"; BOOL bFind = fFind.FindFile( sFindStr.c_str() ); while ( bFind ) { bRet = true; if ( fFind.IsDirectory() ) { if ( !fFind.IsDots() ) { if ( !EnumAllFiles( fFind.GetFilePath().GetBuffer(0) ) ) { bRet = false; break; } } } else { CMediaFile* pMediaFile = new CMediaFile(); if ( pMediaFile ) { if ( pMediaFile->InitFile( fFind.GetFilePath().GetBuffer(0), fFind.GetFileName().GetBuffer(0) ) ) { pMediaFile->m_sNodeName = "Kevin_Test_Node_Name"; m_MediaFileMgr.Insert( pMediaFile->m_sFileHash, pMediaFile ); // 查找到立即发布 PublishFiles(); } else { delete pMediaFile; CKLog::WriteLog( LOG_TYPE_DEBUG, "%s InitFile Failed.", fFind.GetFilePath() ); WriteLog( LOG_TYPE_DEBUG, "%s InitFile Failed.", fFind.GetFilePath() ); } } } bFind = fFind.FindNextFile(); } fFind.Close(); return bRet; }
//フォルダ内ファイル(ディレクトリは除く)を再帰検索 bool UtilRecursiveEnumFile(LPCTSTR lpszRoot,std::list<CString> &rFileList) { CFindFile cFindFile; TCHAR szPath[_MAX_PATH+1]; _tcsncpy_s(szPath,lpszRoot,_MAX_PATH); PathAppend(szPath,_T("*")); BOOL bContinue=cFindFile.FindFile(szPath); while(bContinue){ if(!cFindFile.IsDots()){ if(cFindFile.IsDirectory()){ UtilRecursiveEnumFile(cFindFile.GetFilePath(),rFileList); }else{ rFileList.push_back(cFindFile.GetFilePath()); } } bContinue=cFindFile.FindNextFile(); } return !rFileList.empty(); }
//============================================================================= // 函数名称: 移动覆盖一个指定的目录 // 作者说明: mushuai // 修改时间: 2013-03-14 //============================================================================= int ConvertPath(LPCTSTR srcpath,LPCTSTR targpath) { int iresult = 1; CFindFile finder; if(finder.FindFile(srcpath)) { CString fileName,filePath; do { fileName=finder.GetFileName(); filePath = finder.GetFilePath(); //. .. if (finder.IsDots()) { continue; } //dir else if (finder.IsDirectory()) { CString tTargPath = targpath; tTargPath +=_T("\\")+fileName; ConvertPath(filePath+_T("\\*"),tTargPath); RemoveDirectory(filePath); } else//file { CString newFilePath = targpath; newFilePath +=_T("\\")+fileName; if (!PathFileExists(targpath)) { if(ERROR_SUCCESS != SHCreateDirectoryEx(0,targpath,0)) { return 0; } } BOOL res=MoveFileEx(filePath,newFilePath,MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING); if (!res) { SetFileAttributes(newFilePath,FILE_ATTRIBUTE_NORMAL); if (!DeleteFile(newFilePath)) { MoveFileEx(filePath,newFilePath,MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING); } } } }while (finder.FindNextFile()); } finder.Close(); return iresult; }
int CPhotoEngine::_PopulateList(LPCTSTR szPath) { const int count = 0; BOOL bRes; CFindFile ff; CString sPattern; sPattern.Format(_T("%s\\*.jpg"), szPath); for( bRes = ff.FindFile(sPattern); bRes; bRes = ff.FindNextFile() ) { if( ff.IsDirectory() ) continue; AddImageFile(ff.GetFilePath(), ff.GetFileName()); } return 0; }
bool UtilPathExpandWild(std::list<CString> &r_outList,const CString &r_inParam) { std::list<CString> tempList; if(-1==r_inParam.FindOneOf(_T("*?"))){ //ワイルド展開可能な文字はない tempList.push_back(r_inParam); }else{ //ワイルド展開 CFindFile cFindFile; BOOL bContinue=cFindFile.FindFile(r_inParam); while(bContinue){ if(!cFindFile.IsDots()){ tempList.push_back(cFindFile.GetFilePath()); } bContinue=cFindFile.FindNextFile(); } } r_outList=tempList; return true; }
void MenuCommand_MakeSendToCommands() { TCHAR szSendTo[_MAX_PATH]; std::vector<CString> files; if(SHGetSpecialFolderPath(NULL,szSendTo,CSIDL_SENDTO,FALSE)){ PathAddBackslash(szSendTo); PathAppend(szSendTo,_T("*.lnk")); CFindFile cFind; BOOL bFound=cFind.FindFile(szSendTo); for(;bFound;bFound=cFind.FindNextFile()){ if(cFind.IsDots())continue; if(!cFind.IsDirectory()){ //サブディレクトリ検索はしない files.push_back(cFind.GetFilePath()); } } } UtilGetShortcutInfo(files,s_SendToCmd); }
//ワイルドカードの展開 bool UtilPathExpandWild(std::list<CString> &r_outList,const std::list<CString> &r_inList) { std::list<CString> tempList; std::list<CString>::const_iterator ite=r_inList.begin(); const std::list<CString>::const_iterator end=r_inList.end(); for(;ite!=end;++ite){ if(-1==(*ite).FindOneOf(_T("*?"))){ //ワイルド展開可能な文字はない tempList.push_back(*ite); }else{ //ワイルド展開 CFindFile cFindFile; BOOL bContinue=cFindFile.FindFile(*ite); while(bContinue){ if(!cFindFile.IsDots()){ tempList.push_back(cFindFile.GetFilePath()); } bContinue=cFindFile.FindNextFile(); } } } r_outList=tempList; return true; }