随欣所欲 發表於 2023-2-4 09:36:00

delphi 删除目录(文件夹)

<h1 id="删除目录文件夹">删除目录(文件夹)</h1>
<h2 id="代码">代码</h2>
<h3 id="调用-rmdir-删除目录">调用 <code>RmDir</code> 删除目录</h3>
<pre><code class="language-delphi">procedure TForm1.Button1Click(Sender: TObject);
begin
//创建测试目录
ForceDirectories('D:\测试目录1\目录1');
ForceDirectories('D:\测试目录1\目录2');
//删除空目录
RmDir('D:\测试目录1\目录1');
//删除非空目录报错
try
    RmDir('D:\测试目录1');
except on E: Exception do
    ShowMessage(E.Message);
end;
end;
</code></pre>
<h3 id="调用-removedir-删除目录">调用 <code>RemoveDir</code> 删除目录</h3>
<pre><code class="language-delphi">procedure TForm1.Button2Click(Sender: TObject);
begin
//创建测试目录
ForceDirectories('D:\测试目录2\目录1');
ForceDirectories('D:\测试目录2\目录2');
//删除空目录
if RemoveDir('D:\测试目录2\目录1\') then
    ShowMessage('删除目录成功');
//删除非空目录返回False
if not RemoveDir('D:\测试目录2') then
    ShowMessage('非空目录');
end;
</code></pre>
<h3 id="调用-tdirectorydelete-删除目录">调用 <code>TDirectory.Delete</code> 删除目录</h3>
<pre><code class="language-delphi">uses System.IOUtils;

procedure TForm1.Button3Click(Sender: TObject);
begin
//创建测试目录
ForceDirectories('D:\测试目录3\目录1');
ForceDirectories('D:\测试目录3\目录2');
//删除空目录
TDirectory.Delete('D:\测试目录3\目录1');
//删除非空目录
TDirectory.Delete('D:\测试目录3', True);
end;
</code></pre>
<h2 id="方法">方法</h2>
<h3 id="systemrmdir">System.RmDir</h3>
<pre><code class="language-delphi">procedure RmDir(const S: string);
procedure RmDir(P: PChar);
</code></pre>
<p><strong>unit</strong></p>
<p>System</p>
<p>删除 <em>S</em> 或 <em>P</em> 指定路径的空子目录。如果该路径不存在、非空或者是当前登录的目录,则会发生 I/O 错误。</p>
<blockquote>
<p>在 Delphi 中,{$I+} 使用异常处理运行时错误。 当使用 {$I-} 时,使用 <code>IOResult</code> 检查 I/O 错误。</p>
</blockquote>
<h3 id="systemsysutilsremovedir">System.SysUtils.RemoveDir</h3>
<pre><code class="language-delphi">function RemoveDir(const Dir: string): Boolean;
</code></pre>
<p><strong>unit</strong></p>
<p>System.SysUtils</p>
<p>删除指定路径的空目录。如果成功删除目录,返回值为 <em>True</em>,如果发生错误,返回值为 <em>False</em>。 该目录必须清空才能成功删除。</p>
<blockquote>
<p>在使用 <strong>symlinks</strong> 时,由于 <strong>symlinks</strong> 在不同平台上的实现方式,需要考虑一些特殊情况。 在 <strong>Windows</strong> 上,<code>RemoveDir</code> 只能从目录中删除一个<strong>symlinks</strong>,无论目录链接是否断开。</p>
</blockquote>
<h3 id="systemioutilstdirectorydelete">System.IOUtils.TDirectory.Delete</h3>
<pre><code class="language-delphi">class procedure Delete(const Path: string); overload; inline; static;
class procedure Delete(const Path: string; const Recursive: Boolean);overload; static;
</code></pre>
<p><strong>unit</strong></p>
<p>System.IOUtils</p>
<p>删除给定路径下的目录。</p>
<p><strong>参数</strong></p>
<p><em>Path</em>要删除的目录路径。</p>
<p><em>Recursive</em>删除是递归的。 如果为 <em>False</em>,则不会删除非空目录。</p>
<p><strong>重载</strong></p>
<p><code>Delete(string)</code> 相当于<code>Delete(string, Boolean)</code>中<em>Recursive</em>参数是<em>False</em>,不会删除非空目录。</p>
<blockquote>
<p>如果给定的路径无效或包含无效字符,会引发异常。</p>
</blockquote><br><br>
来源:https://www.cnblogs.com/txgh/p/17090873.html
頁: [1]
查看完整版本: delphi 删除目录(文件夹)