我用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;
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;
解决方案 »
- 求助:关于videowindow
- 问个ComboBox的简单问题~~再线等
- 窗口之间传值的问题
- 散尽所有的分求答案
- 获取WIN2K的用户名及密码程序
- 界面设计高手帮忙!
- 请问高手delphi中复制控件不会提示是否生成组吗?
- 为什么用TNMStrm的Postit方法抛出了Already connect!
- 请教:通过TPrinterSetupDialog设置了打印机后, 如何得到当前打印机的纸张大小(A3还是A4等等)??
- delphi xe10中如何在richedit或Rxrichedit控件中处理表格
- shellexecute打开文件延时和SetWindowPos隐藏窗口 2
- delphi中如何处理SQL中这样的引号
IdFTP3.Get(tfname,''+ExtractFilePath(Application.ExeName)+''+'js\'+tfname,false,false); 去掉exit那部分,只做这样的操做,也可以把exit换成 continue试试