最近在windows下编码,用的是c++
在开发过程中,发现有些常用的API用的不是很熟练,上网查资料,效率太慢。故此写篇文章来整理一下自己用过或即将要用的API函数。
废话不多说,上代码:
//模糊查询
if (-1 != strFile.Find('*',0))
{
//截取\\后面的模糊查询条件
char buf = '\\';
char *dirFilePath;
dirFilePath = (LPSTR)(LPCTSTR)strFile;
dirFilePath += strFile.ReverseFind(buf);
dirFilePath++;
int length = 0;
length = strFile.ReverseFind(buf);
length++;
//截取查询的文件路径
CString fileNamePath = strFile.Left(length);
fileNamePath.Insert(length,"*.*");
string fileName = (LPCTSTR)fileNamePath;
//打开文件路径
_finddata_t fileInfo;
long handle = _findfirst(fileName.c_str(), &fileInfo);
if (handle == -1L)
{
return FALSE; //打开文件路径失败
}
//遍历文件目录
do
{
if (PathMatchSpec(fileInfo.name,dirFilePath))
{
CString folderName = strFile.Left(length);
folderName.Insert(length,fileInfo.name);
//判断是否文件夹
DWORD dwAttributes = GetFileAttributes((LPCTSTR)folderName);
if ( INVALID_FILE_ATTRIBUTES == dwAttributes)
{
WriteLog("Fail to get file %s's FileAttribute.", folderName);
}
else if ( FILE_ATTRIBUTE_DIRECTORY != (dwAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
bFileExist = TRUE;
break;
}
}
} while (_findnext(handle, &fileInfo) == 0);
//返回模糊查询结果
return bFileExist;
}
以上主要用到了一个类的方法和windows下遍历目录文件的API BOOL PathMatchSpec(
LPCSTR pszFile, LPCSTR pszSpec);