比如我要搜索带有“一”字符的所有文本文件,如“一二三.txt”,“三二一.txt”等等?

解决方案 »

  1.   

    要求不高的话 就用strstr()或者CString的Find()
      

  2.   

    FindFirstFile、FindNextFile
    然后在查到的WIN32_FIND_DATA结构里,判断cFileName
      

  3.   

    FindFirstFile和FindNextFile可以用"*"和"?"来替换吧
      

  4.   

    CFileFind类的函数的函数FindNextFile();
      

  5.   

    其实你这个程序的关键是  字符匹配
    给你个差不多的例子吧
    以前写过的:
    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();
      

  6.   


    CFileFind ff;while( ff.Find("一*.txt) )
    {
        // do something}
      

  7.   

    CFileFind ff;while( ff.Find("DirOfYouWant\\一*.txt) )
    {
        // do something}
      

  8.   


    晕,查了一下,手写的函数是错的 :) 下面的是对的CFileFind ff;
    ff.FindFile("DirOfYouWant\\一*.txt))while( ff.FindNextFile() )
    {
    // Call CFildFind ..
    //  GetFileName() GetFileTitle() GetFilePath() GetFileURL()
    //  GetCreationTime() GetLastAccessTime() GetLastWriteTime() GetLength()
    //  GetRoot()//...
    }