这是一个用idFTP遍历整个目录----下载的程序
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP,IdFTPList;type
TForm1 = class(TForm)
idFTP: TIdFTP;
Button1: TButton;
lb_num: TLabel;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure FTP_DownloadDir(var idFTP : TIdFtp;RemoteDir,LocalDir : string);label Files ;vari,DirCount : integer;beginif not DirectoryExists(LocalDir + RemoteDir) thenForceDirectories(LocalDir + RemoteDir);idFTP.ChangeDir(RemoteDir);idFTP.List(nil);DirCount := idFTP.DirectoryListing.Count ;if DirCount = 0 thenbeginidFTP.ChangeDirUp;idFTP.List(nil);end;for i := 0 to DirCount - 1 dobeginif DirCount <> idFTP.DirectoryListing.Count thenbeginrepeatidFTP.ChangeDirUp;idFTP.List(nil);until DirCount = idFTP.DirectoryListing.Count ;end;if idFTP.DirectoryListing[i].ItemType= ditDirectory thenFTP_DownloadDir(idFTP,idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\')else
begin
idFTP.Get(idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\' +idFTP.DirectoryListing[i].FileName,true);Form1.lb_num.Caption := IntToStr(StrToInt(Form1.lb_num.Caption) + 1);Form1.lb_num.Update;if i = DirCount - 1 thenbeginidFTP.ChangeDirUp;idFTP.List(nil);end;end;end;end;
procedure TForm1.Button1Click(Sender: TObject);begin
idFTP.Host:='ip';
idFTP.Username:='username';
idFTP.Password:='12345678';
idFTP.Connect();if idFTP.Connected thenbeginidFTP.ChangeDir('');FTP_DownloadDir(idFTP,'nihao','c:\123\');
idFTP.Disconnect ;
end;
end;
end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP,IdFTPList;type
TForm1 = class(TForm)
idFTP: TIdFTP;
Button1: TButton;
lb_num: TLabel;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure FTP_DownloadDir(var idFTP : TIdFtp;RemoteDir,LocalDir : string);label Files ;vari,DirCount : integer;beginif not DirectoryExists(LocalDir + RemoteDir) thenForceDirectories(LocalDir + RemoteDir);idFTP.ChangeDir(RemoteDir);idFTP.List(nil);DirCount := idFTP.DirectoryListing.Count ;if DirCount = 0 thenbeginidFTP.ChangeDirUp;idFTP.List(nil);end;for i := 0 to DirCount - 1 dobeginif DirCount <> idFTP.DirectoryListing.Count thenbeginrepeatidFTP.ChangeDirUp;idFTP.List(nil);until DirCount = idFTP.DirectoryListing.Count ;end;if idFTP.DirectoryListing[i].ItemType= ditDirectory thenFTP_DownloadDir(idFTP,idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\')else
begin
idFTP.Get(idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\' +idFTP.DirectoryListing[i].FileName,true);Form1.lb_num.Caption := IntToStr(StrToInt(Form1.lb_num.Caption) + 1);Form1.lb_num.Update;if i = DirCount - 1 thenbeginidFTP.ChangeDirUp;idFTP.List(nil);end;end;end;end;
procedure TForm1.Button1Click(Sender: TObject);begin
idFTP.Host:='ip';
idFTP.Username:='username';
idFTP.Password:='12345678';
idFTP.Connect();if idFTP.Connected thenbeginidFTP.ChangeDir('');FTP_DownloadDir(idFTP,'nihao','c:\123\');
idFTP.Disconnect ;
end;
end;
end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货