查找一个目录下面具有相同扩展名的所有文件。问题是第一次CFileFind::GetFileTitle()的结果居然为空,而以后的都正常。不知道为什么?请大侠指点。我的代码如下:
void CFindfileDlg::OnOK() 
{
// TODO: Add extra validation here
UpdateData();
CString fileName = m_dir +_T("\\")+ m_type; CFileFind finder;
BOOL isWorking = finder.FindFile(fileName);
m_msg = _T(""); while(isWorking)
{
CString file = finder.GetFileTitle();//第一次循环时file=_T("")!,以后的都正常,请大侠指点!
m_msg += file;
m_msg += _T("\r\n");
UpdateData(FALSE);
isWorking = finder.FindNextFile();
}
// CDialog::OnOK();
}

解决方案 »

  1.   

    CString file = finder.GetFileTitle();//isWorking = finder.FindNextFile();两句换个位置
      

  2.   

    CFileFind   tempFind;
    CString path="d:\\temp\\*.*";
    CString strFileName, strSuffix, strFilePath;
    int nIndex;
    CString           strAVI;
    BOOL bIsFinded =(BOOL)tempFind.FindFile( path );
    while( bIsFinded )
    {
    bIsFinded = (BOOL)tempFind.FindNextFile();
    if( !tempFind.IsDots() ) 
    {
    strFileName = tempFind.GetFileName();
    nIndex = strFileName.ReverseFind('.');     
    strSuffix = strFileName.Mid(nIndex+1);
    strSuffix.MakeUpper();
    if ( strSuffix=="AVI" ) 
    {
    strAVI =  strFileName;    
    }
    }
    }
    tempFind.Close();
      

  3.   

    同意陌生人。
    FindFile只是查看有没有合适的文件。并不直接得到文件,相当于获取一下符合范围的文件是否大于0个。而FindNextFile才是逐个获取这些文件。