打印本文 打印本文 关闭窗口 关闭窗口
如何用idFTP遍历整个目录----下载、删除
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2571  更新时间:2009/4/23 18:35:19  文章录入:mintao  责任编辑:mintao
 

{删除整个ftp目录,包括下面的文件,

 RootDir = 要删除的根目录,一般情况下 RemoteDir 与 RootDir 相等}

procedure FTP_DeleteAllFiles(var idFTP : TIdFtp;RemoteDir,RootDir : string);

label Files;

var

  i,DirCount : integer;

  Temp : string;

begin

  idFTP.ChangeDir(RemoteDir);

  if Pos(RootDir,idFTP.RetrieveCurrentDir) = 0 then Exit;

Files :

  idFTP.List(nil);

  DirCount := idFTP.DirectoryListing.Count ;

  while DirCount = 0 do

  begin

    Temp := idFTP.RetrieveCurrentDir;

    idFTP.ChangeDirUp;

    idFTP.RemoveDir(Temp);

    idFTP.List(nil);

    DirCount := idFTP.DirectoryListing.Count ;

    for i := 0 to DirCount - 1 do

    if idFTP.DirectoryListing[i].FileName = RootDir then Exit;

  end;

  for i := 0 to DirCount - 1 do

  begin

    if Pos(RootDir,idFTP.RetrieveCurrentDir) = 0 then Break ;

    if idFTP.DirectoryListing[i].ItemType = ditDirectory then

    begin

      FTP_DeleteAllFiles(idFTP,idFTP.DirectoryListing[i].FileName,RootDir);

    end else begin

      idFTP.Delete(idFTP.DirectoryListing[i].FileName);

      Form1.lb_num.Caption := IntToStr(StrToInt(Form1.lb_num.Caption) + 1);

      Form1.lb_num.Update;

      goto Files ;

    end;

  end;

end;

 

procedure TForm1.Btt_DownLoadDirClick(Sender: TObject);

begin

  IdFTP1.Connect(true,-1);

  if IdFTP1.Connected then

  begin

    IdFTP1.ChangeDir(''''bigimage'''');

    FTP_DownloadDir(IdFTP1,''''1002.1002.1002'''',''''g:\ftpdir\'''');

  end;

  IdFTP1.Disconnect ;

end;

 

procedure TForm1.Btt_DeleteDirClick(Sender: TObject);

begin

  IdFTP1.Connect(true,-1);

  if IdFTP1.Connected then

  begin

    IdFTP1.ChangeDir(''''bigimage'''');

    FTP_DeleteAllFiles(IdFTP1,''''1002.1002.1002'''',''''1002.1002.1002'''');

  end;

  IdFTP1.Disconnect ;

end;

 

end.

 

 

运行环境 win2000 advanced server + delphi7.0 + iis6.0

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口