连接ftp服务器下载文件夹的问题??
void CMCCSFileShareDlg:: DowloadFTPDir(CString strDir) //此函数用于遍历文件夹下的文件进行下载,strDir是一个目录路径
{
CString szDir = strDir;
CString strPath;
if(szDir.Right(1) != "//") //保证目录是以\结尾的
szDir += "//";
szDir += "*.*";
CFtpFileFind m_pRemoteFinder1(m_pFTPConnection);
BOOL res = m_pRemoteFinder1.FindFile(szDir);
while( res )
{
res = m_pRemoteFinder1.FindNextFile();
strPath = m_pRemoteFinder1.GetFilePath();
if(m_pRemoteFinder1.IsDirectory() && !m_pRemoteFinder1.IsDots())
{
DowloadFTPDir(strPath); //如果目标是个文件夹,则利用嵌套来遍历
}
else if(!m_pRemoteFinder1.IsDirectory() && !m_pRemoteFinder1.IsDots())
{
//如果是单个文件,直接下载
if(m_pFTPConnection->GetFile(strPath,m_LocalPath))
{
AfxMessageBox("下载成功");
}
}
}
m_pRemoteFinder1.Close();
}
我现在遇到的问题是当文件夹下又有文件夹b(b下还有文件)时,则进行递归调用DowloadFTPDir,这时BOOL res = m_pRemoteFinder1.FindFile(szDir);返回值是0,查看GetLastError值=12110,
我不清楚为什么第二次会不成功,而且我做了个实验,直接重复一次如下:
CFtpFileFind m_pRemoteFinder1(m_pFTPConnection);
BOOL res = m_pRemoteFinder1.FindFile(szDir);
CFtpFileFind m_pRemoteFinder2(m_pFTPConnection);
BOOL res2 = m_pRemoteFinder2.FindFile(szDir);
结果很奇怪,res 等于1,res2就等于0了,查看GetLastError值也是12110,
大家有遇到我这样的问题哦??谢谢了!