我用idftp下载服务器上目录bw中的所有文件,并下载到本地目录为d:\js,咋样可以只下载本地目录为d:\js中不存在的文件,如果存在的就不下载它。
 var
  tt :TIdFTPListItems;
  t : TIdFTPListItem;
  i,AWorkCountMax,AWorkCount : integer;
  tfname,name : String;
  tr : Tstrings;
begin  tr := TStringlist.Create;//下载
  with IdFTP3 do try
    if Connected then
    Disconnect; //重新连接
    Username := Edit2.Text;
    Password := Edit3.Text;
    Host := Edit1.Text;
    Connect;
    Edit5.Text := IdFTP3.RetrieveCurrentDir;//得到初始目录
    IdFTP3.ChangeDir('bw'); //进入到client子目录
  //IdFTP1.ChangeDir('..'); //回到上一级目录
    IdFTP3.List(tr); //得到client目录下所有文件列表
    Memo1.Lines.Assign(tr);
    tr.Free;
    finally
  end;
  Label7.Caption := IdFTP3.DirectoryListing.Items[0].FileName;
  IdFTP3.TransferType:= ftBinary; //指定为二进制文件  或文本文件ftASCII
  for i:=0 to IdFTP3.DirectoryListing.Count-1 do
  begin
    tt := IdFTP3.DirectoryListing; //得到当前目录下文件及目录列表
    t := tt.Items[i]; //得到一个文件相关信息
    Label7.Caption :=t.Text;  //取出一个文件信息内容
    tfname := t.FileName;
    if IdFTP3.DirectoryListing.Items[i].ItemType = ditFile then //如果是文件
    begin
      
      name:=''+ExtractFilePath(Application.ExeName)+''+'js\'+tfname;
      if FileExists(Name) then
      begin
       // IdFTP3.Get(tfname,''+ExtractFilePath(Application.ExeName)+''+'js\'+tfname,false,false); 
        exit;
     //我这的判断,是错的,它只要文件存在就不下载服务器上的任何文件了。咋样才可以只不下载存在的文件,不中断,继续下载其他本地目录中不存在的文件
      end
      else
      begin
        IdFTP3.Get(tfname,''+ExtractFilePath(Application.ExeName)+''+'js\'+tfname,true,false);
      end;
    end;
  end;
  
end;