TIdFTP 两个重要函数

项目开发过程中发现,直接对于服务器上的文件/路径进行处理,是很危险的事情,因为一旦文件/路径不存在,程序就会抛异常,影响客户体验。所以在对服务器上的文件/路径进行访问之前,我们一般先判断服务器上是否存在某个路径/文件,然后再进行进一步的处理。

判断服务器上文件或者路径是否存在 FtpDirectoryExists

请看如下代码:

 1 function TMainFrm.FtpDirectoryExists(ADir: string): Boolean;
 2 var
 3   i, Index: Integer;
 4   strlist: TStringList;
 5   filename: string;
 6   b: Boolean;
 7 begin
 8   Result := false;
 9   Index := 0;
10   strlist := TStringList.Create;
11   strlist.Clear;
12   idFTP.List(strlist, '', True);
13   if strlist.Count > 0 then
14   begin
15     for i := 0 to strlist.Count - 1 do
16     begin
17       filename := trim(strlist.Strings[i]);
18       b := True;
19       while b do
20       begin
21         if Pos(' ', filename) > 0 then
22         begin
23           filename := Trim(Copy(filename, Pos(' ', filename), Length(filename)));
24         end;
25         if Pos(' ', filename) = 0 then b := False;
26       end;
27       if filename = ADir then
28       begin
29         Result := true;
30         Break;
31       end;
32     end;
33   end;
34   strlist.Free;
35 end;

创建FTP路径/文件夹 CreateFtpDir

请看如下代码:

 1 procedure TMainFrm.CreateFtpDir(V_Path: string);
 2 var
 3   i, j, k: Integer;
 4   sFtpPath, s: tstringlist;
 5   t_Path, sSTR: string;
 6 begin
 7   sFtpPath := tstringlist.Create;
 8   sFtpPath.Clear;
 9   sFtpPath.Delimiter := '/';
10   sFtpPath.DelimitedText := V_Path;
11   idFTP.ChangeDir('/');
12     //检查目录是否存在,不存在时自动创建
13   for K := 0 to sFtpPath.Count - 1 do
14   begin
15     sSTR := sFtpPath[k];
16     try
17       if not FtpDirectoryExists(sSTR) then
18         idFTP.MakeDir(sSTR);
19     except
20       on E: Exception do
21       begin
22         null;
23       end;
24     end;
25     idFTP.ChangeDir(sSTR + '/');
26   end;
27   sFtpPath.Free;
28 end;

 

https://www.cnblogs.com/jeremywucnblog/
  本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类:

技术点:

相关文章: