【问题标题】:How to check whether a directory exists or not in delphi XE2?delphi XE2中如何检查目录是否存在?
【发布时间】:2013-02-19 06:34:32
【问题描述】:

我想创建一个目录,比如TestDir,但前提是该目录不存在。我找不到检查该目录是否存在的方法。

我正在使用以下函数来创建目录。

CreateDir('TestDir')

我应该如何确保仅当TestDir 不存在时才使用此CreateDir 函数?

【问题讨论】:

  • 在创建之前不要费心检查。它引入了竞争条件。只需拨打ForceDirectories即可同时查看和创建。
  • Rob 说的很对。只需创建目录并适当处理任何故障。

标签: delphi delphi-xe2 delphi-7


【解决方案1】:

在Delphi XE2中,可以使用IOUtils单位TDirectory记录,像这样:

uses IOUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not TDirectory.Exists('test') then
    TDirectory.CreateDirectory('test');

在 Delphi7 中,您可以使用 SysUtils 单元中的 DirectoryExists 函数:

uses SysUtils, Windows;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not DirectoryExists('test') then
    CreateDir('test');

【讨论】:

    【解决方案2】:

    SysUtils 中有一个名为 DirectoryExists 的例程,它应该完全满足您的需要...

    【讨论】:

      【解决方案3】:

      CreateDir 只能创建比现有目录“高”一级的目录。例如, CreateDir('C:\Folder1\Folder2') 仅在 C:\Folder1 已存在时才有效,同样 CreateDir('C:\F1\F2\F3') 仅在 C:\F1\F2 存在时才有效。要一步创建“中间”文件夹,请使用 Delphi 的 ForceDirectories。

      procedure TForm1.Button2Click(Sender: TObject);
      begin
        if DirectoryExists(Edit1.Text) then
          ShowMessage(Edit1.Text + ' exists already')
        else begin
          ForceDirectories(Edit1.Text);
          if DirectoryExists(Edit1.Text) then
            ShowMessage('Folder created: ' + Edit1.Text)
          else
            ShowMessage('Could not create ' + Edit1.Text);
        end;
      end;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-12
        • 2011-12-20
        • 2011-02-15
        • 2023-02-22
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多