在MFC中,因為檔案夾的圖片每個名字都不一樣,我想在固定的檔案夾中,根據圖片的一部分名字,查找到這個圖片的全部名字該怎樣寫呢?
uj5u.com熱心網友回復:
查找檔案 CFileFinduj5u.com熱心網友回復:
定義一個CFileFind物件,用CFileFind::FindFile啟動查找,檔案名使用通配符,
然后呼叫FindNextFile ,
如果找到,使用 GetFileName回傳準確的檔案名
uj5u.com熱心網友回復:
system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");//讀檔案d:\\allfiles.txt的內容即C:\\下所有檔案的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//讀檔案d:\\allfilesinsub.txt的內容即C:\\下所有檔案的名字包含子目錄
system("dir /b /ad c:\\*.* >d:\\alldirs.txt");
//讀檔案d:\\alldirs.txt的內容即C:\\下所有子目錄的名字
請記住,能用shell命令獲取檔案、檔案夾資訊或者操作檔案、檔案夾最好用shell命令獲取或者操作,而不要用各種API獲取或者操作,因為當遇到非法檔案夾名或非法檔案名或非法檔案長度、非法檔案日期、壓縮檔案、鏈接檔案、稀疏檔案……等各種意料之外的情況時,API會處理的不全面或陷入死回圈,而shell命令不會。
如果嫌system黑視窗一閃,將system("...")替換為WinExec("cmd /c ...",SW_HIDE);
uj5u.com熱心網友回復:
/*
author: shiyanbo 2018-02-08
function name: ReadFileFromFolder
input param: strFoledrPath
out param: 無
meaning: 根據輸入目錄獲取當前目錄下的所有檔案包含子檔案夾以及其下面的所有檔案,直到最底層為止
return value NULL
*/
void CDlgCheckImgResult::ReadFileFromFolder(CString &strFoledrPath)
{
WIN32_FIND_DATA FindData;
HANDLE hError;
char FilePathName[MAX_PATH];
ZeroMemory(FilePathName,sizeof(FilePathName));
strcpy(FilePathName,strFoledrPath);
strcat(FilePathName,"\\*.*");
hError = ::FindFirstFile(FilePathName,&FindData);
if (hError == INVALID_HANDLE_VALUE)
{
//cout <<"查找檔案失敗"<<endl;
return ;
}
while (::FindNextFile(hError,&FindData))
{
//過濾.和..
if (0 == strcmp(FindData.cFileName,"." ) || 0 == strcmp(FindData.cFileName,".." ))
{
continue;
}
//檔案名稱
CString strFileName;
//過濾目錄
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strFileName.Format("%s",FindData.cFileName) ;
CString strFullFileName = strFoledrPath+"\\"+strFileName;
//這樣是一個目錄,繼續遍歷讀取檔案
ReadFileFromFolder(strFullFileName);
continue;
}
strFileName.Format("%s",FindData.cFileName) ;
int pos = strFileName.ReverseFind('.');
//非圖片和目錄
if (-1 == pos )
{
continue ;
}
else
{
strFileName = strFileName.Mid(pos+1, strFileName.GetLength() - pos -1);
if (!strFileName.Compare(IMAGE_TYPE_JPG) || !strFileName.Compare(IMAGE_TYPE_PNG) || !strFileName.Compare(IMAGE_TYPE_BMP) || !strFileName.Compare(IMAGE_TYPE_TIFF))
{
CString strFullPathName;
// 構造完整路徑
strFullPathName.Format("%s\\%s", strFoledrPath,FindData.cFileName) ;
vceImageSumResult.push_back(strFullPathName);
}
else
{
continue ;
}
}
}
}
uj5u.com熱心網友回復:
上面可以查找符合條件的圖片,顯示喲弄GDI+,CXimage還是opencv就隨你心情了uj5u.com熱心網友回復:
你是想要查找圖片檔案的完整檔案名??轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/75386.html
標籤:界面
