我的ftp目录下分明有3000多个文件,但用cftpfilefind只能看到2000个整文件,这是为什么?我什么地方弄错了吗?

解决方案 »

  1.   

    我也希望写得有问题,但做了仔细检查,应该没问题; CFtpFileFind ft(this->m_pserver);
    flag = ft.FindFile(path);
    pos = 0;
    while(flag)
    {
    flag = ft.FindNextFile();
    if(ft.IsDots())
    {
    if(option == 0)
    continue;
    }
    pt = (TFileInfo *)pinfo->Add();
    pt->fn = ft.GetFileName(); pt->size = (int)ft.GetLength();
    if(pt->size < 0)
    pt->size *= -1;
    ft.GetLastWriteTime(tm);
    pt->date = tm.GetYear() * 10000 + tm.GetMonth() * 100 + tm.GetDay();
    pt->time = tm.GetHour() * 10000 + tm.GetMinute() * 100 + tm.GetSecond(); pt->isdir = 0;
    if(ft.IsDirectory())
    {
    pt->isdir = 1;
    pinfo->Swap(pos, pinfo->GetCount()-1);
    pos++;
    }
    if(flag == FALSE)
    {
    break;
    }
    }
    ft.Close();
      

  2.   

    如果你的文件不是在同一个目录下,也就是说下面还有好多子目录,你的代码是有问题的至少
    if(ft.IsDirectory()) 
    {
       
    }
    要做同样的处理,也就是遍历目录是个递归调用
      

  3.   


    这个目录下没有别的目录,只有一堆的文件,我debug了,确实到了2000之后,返回值flag=0,导致没法运行下去了;
      

  4.   

    与FTP SERVER的连接TIMEOUT了?
      

  5.   

    查了返回值,居然是:ERROR_NO_MORE_FILES
    我确认这个目录下有3千多个文件,每次都是到2000的时候结束扫描,这种确定性的结果,到底是为啥呢?
      

  6.   

    也许我需要考虑从ftp协议入手来做这个功能了;可惜可惜!