• Delphi


    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;

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

  • 相关阅读:
    requests模块
    Flask框架 之 上下文管理前戏
    Flask框架 之 学生管理分析
    Flask框架 之 路由和视图详解
    数据库连接池DBUtils
    C++中endl和cout语句
    Linux如何在一个文件中写入内容
    C++常量
    Linux重启命令
    Linux命令1
  • 原文地址:https://www.cnblogs.com/jeremywucnblog/p/11491024.html
Copyright © 2020-2023  润新知