[原创]Delphi 目录函数:ForceDirectories 和 CreateDir 的详细介绍
[原创]Delphi 目录函数:ForceDirectories 和 CreateDir 的详细介绍
引用单元:SysUtils
1、CreateDir 创建一个新目录
1 | function CreateDir( const Dir: string ): Boolean ; //创建一级目录 父目录必需存在 |
1 2 3 4 | function CreateDir( const Dir: string ): Boolean ; begin Result := CreateDirectory( PChar (Dir), nil ); end ; |
返回值:如果成功创建了新目录,则返回值为true;如果发生错误,则返回值为false。
2、ForceDirectories 创建新目录,包括根据需要创建父目录。
1 | function ForceDirectories(Dir: string ): Boolean ; //创建多级目录 父目录不必存在 (Force 有暴力、强制的意思) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function ForceDirectories(Dir: string ): Boolean ; var E: EInOutError; begin Result := True ; if Dir = '' then begin E := EInOutError . CreateRes(@SCannotCreateDir); E . ErrorCode := 3 ; raise E; end ; Dir := ExcludeTrailingPathDelimiter(Dir); {$IFDEF MSWINDOWS} if (Length(Dir) < 3 ) or DirectoryExists(Dir) or (ExtractFilePath(Dir) = Dir) then Exit; // avoid 'xyz:\' problem. { $ENDIF } {$IFDEF LINUX} if (Dir = '' ) or DirectoryExists(Dir) then Exit; { $ENDIF } Result := ForceDirectories(ExtractFilePath(Dir)) and CreateDir(Dir); end ; |
ForceDirectory按照Dir中的指定创建一个新目录,该目录必须是完全限定的路径名。如果路径中给出的目录尚不存在,ForceDirectory会尝试创建它们。
返回值:如果ForceDirectory成功创建了所有必要的目录,则返回true;如果无法创建所需的目录,则返回false。
重要提示:不要使用空字符串调用ForceDirectory。这样做会导致ForceDirectory引发异常。
FileCtrl单元(仅限Windows)还包含ForceDirectory函数。但是,不推荐使用FileCtrl版本,而首选SysUtils版本,即使代码不需要跨平台。
3、CreateDir 和 ForceDirectories 的 区别
//例如:现有目录:D:\目录1
//想要创建:D:\目录1\目录2\目录3\目录4 不存在的文件目录有 :目录2\目录3\目录4
ForceDirectories 函数 会同时创建这三个目录 目录2、目录3、目录4
CreateDir 函数 如果不存在 目录2 这个目录,则返回创建 [目录4] 文件夹失败
4、示例:
4.1 CreateDir
1 2 3 4 5 6 7 8 | uses FileCtrl; procedure TForm1 . Button1Click(Sender: TObject); begin if not DirectoryExists( 'c:\temp' ) then if not CreateDir( 'C:\temp' ) then raise Exception . Create( '不能创建 c:\temp' ); end ; |
4.2 ForceDirectories
1 2 3 4 5 6 7 8 9 | procedure TForm1 . Button1Click(Sender: TObject); var Dir: string ; begin Dir := 'C:\目录1\目录2\目录3' ; if ForceDirectories(Dir) then Label1 . Caption := Dir + ' 已经创建' ; end ; |
创建时间:2019.07.30 更新时间:2022.02.16
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报