【问题标题】:How can I Create folders recursively in Delphi?如何在 Delphi 中递归创建文件夹?
【发布时间】:2023-06-21 02:06:01
【问题描述】:

在创建函数时需要一些帮助,该函数可以通过给出路径递归地创建文件夹:

C:\TestFolder\Another\AndAnother

Delphi 函数 MkDir 返回 IOerror = 3。

MkDir('C:\TestFolder\Another\AndAnother');

【问题讨论】:

    标签: delphi recursion mkdir


    【解决方案1】:

    这使用新的 IOUtils 而不是 SysUtils。
    IOUtils 是跨平台兼容和 UNC 感知的(但在一些地方也有问题)。

    function ForceDirectories(FullPath: string): Boolean;   // Works with UNC paths
    begin
      TDirectory.CreateDirectory(FullPath);
      Result:= DirectoryExists(FullPath);
    end;
    

    【讨论】:

      【解决方案2】:

      使用

      ForceDirectories('C:\TestFolder\Another\AndAnother');
      

      (这是一个标准的 RTL 函数,可在 SysUtils.pas 中找到。因此您不需要创建自己的函数,即使这并不困难。)

      【讨论】:

      • 编写您自己的ForceDirectories 以在您的计算机上运行:简单。编写一个在野外处理所有边缘情况的工作:hard
      • 没错,所有的边缘情况都很难。
      • 这不是 UNC 感知的,这就是我推荐新的 IOUtils 库的原因。