以下是我的代码,我只能查找到第一层目录下的文件和目录,通过递归进入到第二层目录后FindFile()的返回结果为0,请问为什么谢谢!
void CAnsyDlg::search(CString path)
{
CFtpFileFind* pFileFind;
CString strFileName;
BOOL bContinue;
pFileFind=NULL;
if(pConnection!=NULL)
{
//创建CFtpFileFind对象
//传递CFtpConnection对象的指针
pFileFind=new CFtpFileFind(pConnection);
//查找任意文件
bContinue=pFileFind->FindFile(path+"*.*");
while(bContinue)
{
//查找下一个文件
bContinue=pFileFind->FindNextFile();
strFileName=pFileFind->GetFileName();
if(strFileName=="."||strFileName=="..")continue;
//判断是否为目录
if(pFileFind->IsDirectory())
{
search(path+strFileName+"/");
}
else
{
//显示文件名信息
m_strMsg=m_strMsg+strFileName;
UpdateData(FALSE);
}
}
if(pFileFind!=NULL)
{
pFileFind->Close();
pFileFind=NULL;
}
delete pFileFind;
}
}
void CAnsyDlg::search(CString path)
{
CFtpFileFind* pFileFind;
CString strFileName;
BOOL bContinue;
pFileFind=NULL;
if(pConnection!=NULL)
{
//创建CFtpFileFind对象
//传递CFtpConnection对象的指针
pFileFind=new CFtpFileFind(pConnection);
//查找任意文件
bContinue=pFileFind->FindFile(path+"*.*");
while(bContinue)
{
//查找下一个文件
bContinue=pFileFind->FindNextFile();
strFileName=pFileFind->GetFileName();
if(strFileName=="."||strFileName=="..")continue;
//判断是否为目录
if(pFileFind->IsDirectory())
{
search(path+strFileName+"/");
}
else
{
//显示文件名信息
m_strMsg=m_strMsg+strFileName;
UpdateData(FALSE);
}
}
if(pFileFind!=NULL)
{
pFileFind->Close();
pFileFind=NULL;
}
delete pFileFind;
}
}
void Cmfcftp3Dlg::List()
{
CString m_i;
CString m_ii; CStringArray m_Dir; CFtpFileFind finder(m_pFtpConnection);
BOOL bWorking=finder.FindFile(_T("*")); while (bWorking)
{
bWorking = finder.FindNextFile(); if ( finder.IsDots() ) continue;
if ( finder.IsHidden() ) continue; if (finder.IsDirectory())
{
m_Dir.Add( finder.GetFileName());
}
else
{
m_i=finder.GetFileName()+"\r\n";
m_ftpinfo +=m_i;
UpdateData(FALSE);
}
}
finder.Close(); for(int i=0;i<m_Dir.GetSize();i++)
{ m_i="["+m_Dir.GetAt(i)+"]"+"\r\n";
m_ftpinfo +=m_i;
UpdateData(FALSE); m_pFtpConnection->SetCurrentDirectory(m_Dir.GetAt(i));
List(); m_pFtpConnection->SetCurrentDirectory("..");
}}