使用CFtpFileFind和递归算法来遍历ftp目录
2010-07-06 20:43:55 来源:WEB开发网这里有个问题就是关于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);
}
}
本文配套源码
Tags:使用 CFtpFileFind 递归
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接