Delphiのファイル操作 - System.SysUtilsとSystem.IOUtils

Delphiのファイル操作にかかわる関数には従来のSystem.SysUtilとSystem.IOUtilsに似たものがあります
System.IOUtilsにすべて移行できる訳でないのですが，できるだけSystem.IOUtilsにあるものを使うようにするために関係する関数について[docwikiのパス操作ルーチン(Alexandria)](https://docwiki.embarcadero.com/RADStudio/Alexandria/ja/%E3%83%91%E3%82%B9%E6%93%8D%E4%BD%9C%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3)からピックアップして整理してみました。
それから，第28回デベロッパーキャンプの「業務アプリ開発で生かせるDelphiプログラミングテクニック」富永英明(@ht_deko)も参考にさせていただきました。ありがとうございます。
なお，2022/09/24現在，docwikiのリンクはAlexandria(Delphi11)にしています。

|関数(定数)名|説明|
|:-|:-|
|__必須__|
|[System.IOUtils.TPath.Combine](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.Combine)|2つのパス文字列を結合 +よりも不正なパスを作り出しにくい|
|[System.SysUtils.PathDelim](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils)|パスの区切り文字定数 ’￥’を再定義しないための覚書|
|__パス名の区切り__|
|[System.SysUtils.IncludeTrailingBackslash](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.IncludeTrailingBackslash)|パス名の末尾が必ず区切り記号になるようにする(非推奨)|
|[System.SysUtils.ExcludeTrailingBackslash](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExcludeTrailingBackslash)|末尾に区切り記号が付いていないパス名を返す(非推奨)|
|[System.SysUtils.IncludeTrailingPathDelimiter](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.IncludeTrailingPathDelimiter)|パス名の末尾が必ず区切り記号になるようにする|
|[System.SysUtils.ExcludeTrailingPathDelimiter](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExcludeTrailingPathDelimiter)|末尾に区切り記号が付いていないパス名を返す|
|__ファイル名__|
|[System.SysUtils.ExtractFileName](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExtractFileName)|ファイル名の名前部分と拡張子部分を抽出|
|[System.IOUtils.TPath.GetFileName](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetFileName)|ファイル名の名前部分と拡張子部分を抽出|
|[System.IOUtils.TPath.GetFileNameWithoutExtension](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetFileNameWithoutExtension)|ファイル名の名前部分（拡張子を除く）を抽出|
|__ディレクトリ名__||
|[System.SysUtils.ExtractFileDir](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExtractFileDir)|ファイル名からドライブ部分とディレクトリ部分を返す|
|[System.SysUtils.ExtractFilePath](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExtractFilePath)|ファイル名からドライブ部分とディレクトリ部分を返す|
|[System.IOUtils.TPath.GetDirectoryName](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetDirectoryName)|ファイル名からドライブ部分とディレクトリ部分を返す|
|__拡張子__|
|[System.SysUtils.ExtractFileExt](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExtractFileExt)|ファイル名の拡張子部分を返す|
|[System.IOUtils.TPath.GetExtension](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetExtension)|ファイル名の拡張子部分を抽出|
|__拡張子の変更__|
|[System.SysUtils.ChangeFileExt](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ChangeFileExt)|ファイル名の拡張子を変更|
|[System.IOUtils.TPath.ChangeExtension](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.ChangeExtension)|指定されたパスで示されるファイルまたはディレクトリの拡張子を変更 (.なしを指定できない)|
|__絶対パスを返す__|
|[System.SysUtils.ExpandFileName](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ExpandFileName)|相対ファイル名の完全パス名を返す|
|[System.IOUtils.TPath.GetFullPath](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetFullPath)|指定されたパスの絶対パスを返す|
|__ディレクトリの作成__|
|[System.SysUtils.CreateDir](System.SysUtils.CreateDir)|ディレクトリを作成する|
|[System.IOUtils.TDirectory.CreateDirectory](System.IOUtils.TDirectory.CreateDirectory)|ディレクトリを作成する|
|[System.SysUtils.ForceDirectories](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.ForceDirectories)|新しいディレクトリを作成(必要に応じて親ディレクトリも作成)|
|__ディレクトリ操作__|
|[System.IOUtils.TDirectory.Copy](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TDirectory.Copy)|ディレクトリごとファイルをコピー|
|[System.IOUtils.TDirectory.Delete](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TDirectory.Delete)|ディレクトリごとファイルを削除 ※サブフォルダがある場合にはRecursiveをTrueにする|
|[System.IOUtils.TDirectory.Move](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TDirectory.Move)|ディレクトリごとファイルを移動 ※移動先に同名のファイルが存在してはならない|
|__ファイル操作__|
|[System.IOUtils.TFile.Copy](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TFile.Copy)|ファイルをコピー|
|[System.IOUtils.TFile.Delete](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TFile.Delete)|ファイルを削除|
|[System.IOUtils.TFile.Move](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TFile.Move)|ファイルを移動 移動先に同名のファイルが存在してはならない|
|__特殊フォルダ__|
|[System.IOUtils.TPath.GetTempPath](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetTempPath)|システムの一時ディレクトリへのパスを返します|
|[System.IOUtils.TPath.GetHomePath](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetHomePath)|ユーザーのホーム パスを返します|
|__属性__|
|[System.IOUtils.TPath.SetAttributes](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.SetAttributes)|ファイルまたはディレクトリ属性を設定|
|[System.IOUtils.TPath.GetAttributes](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TPath.GetAttributes)|ファイルまたはディレクトリ属性を返す|
|__ファイル存在チェック__|
|[System.IOUtils.TFile.Exists](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TFile.Exists)|指定されたファイルが存在するかどうかを確認|
|[System.SysUtils.FileExists](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.FileExists)|指定したファイルが存在するかどうかを検査|
|__ディレクトリ存在チェック__|
|[System.IOUtils.TDirectory.Exists](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.IOUtils.TDirectory.Exists)|指定のディレクトリが存在するかどうかをチェック|
|[System.SysUtils.DirectoryExists](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/System.SysUtils.DirectoryExists)|指定したディレクトリが存在するかどうかを判断|
|__VCL(FMXにもあるといいなぁ)__|
|[Vcl.FileCtrl.MinimizeName](https://docwiki.embarcadero.com/Libraries/Alexandria/ja/Vcl.FileCtrl.MinimizeName)|指定された長さ制限の中に描画できるように完全修飾パス名を短縮|