如何实现模糊搜索文件啊? 比如我要搜索带有“一”字符的所有文本文件,如“一二三.txt”,“三二一.txt”等等? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要求不高的话 就用strstr()或者CString的Find() FindFirstFile、FindNextFile然后在查到的WIN32_FIND_DATA结构里,判断cFileName FindFirstFile和FindNextFile可以用"*"和"?"来替换吧 CFileFind类的函数的函数FindNextFile(); 其实你这个程序的关键是 字符匹配给你个差不多的例子吧以前写过的:SetCurrentDirectory(path); CFileFind finder; BOOL bWorking= finder.FindFile(); CWaitCursor wait; while(bWorking) { bWorking=finder.FindNextFile(); if(finder.IsHidden()||finder.IsSystem()) continue; else if(finder.IsDirectory()&&!finder.IsDots()) { TCHAR oldpath[MAX_PATH]; GetCurrentDirectory(-1,oldpath); //SetDlgItemText(IDC_EDIT3, path); //MessageBox(finder.GetFilePath()); findandshowit(finder.GetFilePath(),filename); SetCurrentDirectory(oldpath); } else if(m_filename==finder.GetFileName()||m_filename==finder.GetFileTitle()) //你只要在这里设置匹配条件就好了,可以调用CString的Find函数嘛 { CFileStatus filestatus; CFile::GetStatus(finder.GetFilePath(),filestatus); float flen=(float)filestatus.m_size; CString unit=_T("Byte"); if(flen>1024) { flen/=1024; if(flen<1024) unit=_T("KB"); else{ flen/=1024; unit=_T("MB"); } } CString len; len.Format(_T("%1.2f"),flen); SHFILEINFO fi; if(::SHGetFileInfo(finder.GetFilePath(), FILE_ATTRIBUTE_NORMAL, &fi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME |SHGFI_ICON|SHGFI_SMALLICON )) { m_ListCtrl.InsertItem(m_item,fi.szDisplayName); m_ListCtrl.SetItemText(m_item,1,finder.GetRoot()); m_ListCtrl.SetItemText(m_item,2,(len+unit)); m_ListCtrl.SetItemText(m_item++,3,fi.szTypeName); m_ListCtrl.UpdateData(); } } } wait.Restore(); CFileFind ff;while( ff.Find("一*.txt) ){ // do something} CFileFind ff;while( ff.Find("DirOfYouWant\\一*.txt) ){ // do something} 晕,查了一下,手写的函数是错的 :) 下面的是对的CFileFind ff;ff.FindFile("DirOfYouWant\\一*.txt))while( ff.FindNextFile() ){// Call CFildFind ..// GetFileName() GetFileTitle() GetFilePath() GetFileURL()// GetCreationTime() GetLastAccessTime() GetLastWriteTime() GetLength()// GetRoot()//...} 在单文档程序中实现一个透明子窗口 CRichEdit 删除指定文字 怎么样在Text控件中画直线? 位操作的处理方法 一个关于openURL的问题!请大家帮忙。 如何实现AciveX控件在视图上的拖动?高分奉送! 在线等待:编译错误:unresolved external symbol _WinMain@16,有经验者请进 仿飞秋局域网聊天判断在线 这是我的问题还是微软的问题?COM高手请过来 谁会用WinPcap? 请教c++头文件的作用? 用什么做已经写好的程序的安装程序?
然后在查到的WIN32_FIND_DATA结构里,判断cFileName
给你个差不多的例子吧
以前写过的:
SetCurrentDirectory(path);
CFileFind finder;
BOOL bWorking= finder.FindFile();
CWaitCursor wait;
while(bWorking)
{
bWorking=finder.FindNextFile();
if(finder.IsHidden()||finder.IsSystem())
continue;
else if(finder.IsDirectory()&&!finder.IsDots())
{
TCHAR oldpath[MAX_PATH];
GetCurrentDirectory(-1,oldpath);
//SetDlgItemText(IDC_EDIT3, path);
//MessageBox(finder.GetFilePath());
findandshowit(finder.GetFilePath(),filename);
SetCurrentDirectory(oldpath);
}
else if(m_filename==finder.GetFileName()||m_filename==finder.GetFileTitle()) //你只要在这里设置匹配条件就好了,可以调用CString的Find函数嘛
{
CFileStatus filestatus;
CFile::GetStatus(finder.GetFilePath(),filestatus);
float flen=(float)filestatus.m_size; CString unit=_T("Byte");
if(flen>1024)
{
flen/=1024;
if(flen<1024) unit=_T("KB");
else{
flen/=1024;
unit=_T("MB");
}
}
CString len;
len.Format(_T("%1.2f"),flen);
SHFILEINFO fi;
if(::SHGetFileInfo(finder.GetFilePath(), FILE_ATTRIBUTE_NORMAL, &fi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_TYPENAME |SHGFI_ICON|SHGFI_SMALLICON ))
{
m_ListCtrl.InsertItem(m_item,fi.szDisplayName);
m_ListCtrl.SetItemText(m_item,1,finder.GetRoot());
m_ListCtrl.SetItemText(m_item,2,(len+unit));
m_ListCtrl.SetItemText(m_item++,3,fi.szTypeName);
m_ListCtrl.UpdateData();
}
}
}
wait.Restore();
CFileFind ff;while( ff.Find("一*.txt) )
{
// do something}
{
// do something}
晕,查了一下,手写的函数是错的 :) 下面的是对的CFileFind ff;
ff.FindFile("DirOfYouWant\\一*.txt))while( ff.FindNextFile() )
{
// Call CFildFind ..
// GetFileName() GetFileTitle() GetFilePath() GetFileURL()
// GetCreationTime() GetLastAccessTime() GetLastWriteTime() GetLength()
// GetRoot()//...
}