delphi中CreateDirectory和CreateDir有啥区别?创建文件夹的同时能定义文件夹的属性吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中CreateDirectory和CreateDir有啥区别?创建文件夹的同时能定义文件夹的属性吗?相关的知识,希望对你有一定的参考价值。

CreateDirectory可以再创建目录是指定文件夹的属性,CreateDir则不能。 参考技术A CreateDirectory 可以创建多级目录追问

这个不会有!ForceDirectories可以创建多级

追答

ForceDirectories 对,我记错了.

参考技术B CreateDir也是通过调用CreateDirectory实现的,只是简化了参数,并且增加了LINUX支持。
CreateDirectory只能用于windows编程。CreateDir在linux下Kylix也能调用,使代码的兼容性、可移植性更强。

在SysUtils单元中:
function CreateDir(const Dir: string): Boolean;
begin
$IFDEF MSWINDOWS
Result := CreateDirectory(PChar(Dir), nil);
$ENDIF
$IFDEF LINUX
Result := __mkdir(PChar(Dir), mode_t(-1)) = 0;
$ENDIF
end;追问

有什么函数创建文件夹的同时又能同时定义文件夹的属性呢?

追答

CreateDirectory

追问

CreateDirectory,第二个参数为nil是默认一般属性,那如果要设为只读什么的,如何设置呢?

在 C# 中使用 CreateDirectory 避免 NotSupportedException

【中文标题】在 C# 中使用 CreateDirectory 避免 NotSupportedException【英文标题】:Avoiding NotSupportedException using CreateDirectory in c# 【发布时间】:2011-09-14 23:42:17 【问题描述】:

我正在尝试递归地创建一堆目录,并且某些目录名称包含“:”字符,其中会引发上述异常。我希望有办法避免这种情况? 下面是我正在使用的代码片段:

foreach (TagLib.File tagFile in tagFiles)
        
            GetInfo(tagFile, targetDir);

            if (!Directory.Exists(TargetFullPath))
            
                Directory.CreateDirectory(TargetFullPath);
                System.IO.File.Copy(FilePath, TargetFullPath + "\\" + tagFile.Tag.Title + TargetExt);
             ...

'TargetFullPath' = "G:\Users\Jon\Desktop\musictest\Journey\Journey: Greatest Hits"

非常感谢:)

【问题讨论】:

: 不允许出现在目录或文件名中。就是这样。没有解决方法。只需将其替换为 _ 或类似的东西。 与问题不完全相关,但您应该在构建路径字符串时尝试使用Path.Combine。 【参考方案1】:

冒号是你不能使用的字符之一,但你可以很容易地替换它。为了确保您只替换文件名部分中的字符(这样您就不会清除构成文件路径其余部分的反斜杠),您可以使用:

Path.Combine(Path.GetDirectoryName(TargetFullPath),Path.GetFileName(TargetFullPath).Replace(":","_"));

假设文件名 (see this list) 中可能存在其他非法字符,您将需要更健壮的内容,例如 Regex 语句。

【讨论】:

以上是关于delphi中CreateDirectory和CreateDir有啥区别?创建文件夹的同时能定义文件夹的属性吗?的主要内容,如果未能解决你的问题,请参考以下文章

delphi 如何创建文件夹

RichEdit 2.0 使用单个 CR 字符作为换行符会引发 SelStart 计算(Delphi XE2)

Delphi控件继承类

Directory.CreateDirectory() 不在 ZipFile 中创建文件夹

为啥有时 Directory.CreateDirectory 会失败?

在 C# 中使用 CreateDirectory 避免 NotSupportedException