WEB开发网
开发学院软件开发VC 使用CFtpFileFind和递归算法来遍历ftp目录 阅读

使用CFtpFileFind和递归算法来遍历ftp目录

 2010-07-06 20:43:55 来源:WEB开发网   
核心提示:这里有个问题就是关于CFtpFileFind的调用,不能同时有两个CFtpFileFind的函数存在,否则会出错,这也是为什么要用数组保存的原因! 对此msdn的解释是:ERROR_FTP_TRANSFER_IN_PROGRESSThe requested operation cannot be made on the

这里有个问题就是关于CFtpFileFind的调用,不能同时有两个CFtpFileFind的函数存在,

否则会出错,这也是为什么要用数组保存的原因! 对此msdn的解释是:

ERROR_FTP_TRANSFER_IN_PROGRESS

The requested operation cannot be made on the FTP session handle because an

operation is already in progress.

需要改进的地方,一个是线程的问题,遍历很占用资源,所以最后专门用个线程来.

再,一是可能是递归效率的问题,一可能是WinInet的问题,当需要遍历的目录比较多或者深的时候,

可能会出现程序显示没有响应.

其他: 刚好今天收到一位csdn上的朋友的信,告诉我他的解决方法.大同小异,一起附上,但没有测试.

来自nicky:

void ExpoloerDir(CString strDir) {
 CFtpFileFind finder(pFtp);
 CString filename;
CStringList list;
 m_pFtp->SetCurrentDirectory(strDir);
 bool bContinue=(bool)finder.FindFile(“*”);
 while(bContinue) {
   bContinue=finder.FindNextFile();
   filename=finder.GetFileName();
   if(filename=="."||filename=="..")
     continue;
   if(finder.IsDirectory()==true)
     list.AddTail(filename);
 }
 finder.close();
 while(list.IsEmpty()==false) {
strDir=list.RemoveHead();
ExplorerDir(strDir);
}
}

本文配套源码

上一页  1 2 

Tags:使用 CFtpFileFind 递归

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接