セージ の メモ書き

メモこそ命の恩人だ

C# - Path.Combine メソッド

Path.Combine メソッド

Path.Combine メソッド (System.IO) | Microsoft Docs

  • 複数の文字列を結合し、ファイルパスを生成できる。
  • 結合時、"\" が自動的に挿入される。
    • 文字列の終端に "\" がない場合、挿入する。
    • 文字列の終端に "\" がある場合、挿入しない。

(注釈 抜粋)

その要素または文字でDirectorySeparatorChar終わらない場合、Combineメソッドはその要素と次のAltDirectorySeparatorChar要素の間に文字を追加DirectorySeparatorCharします。

Debug.WriteLine(Path.DirectorySeparatorChar);
// \
Debug.WriteLine(Path.AltDirectorySeparatorChar);
// /
// 文字列が DirectorySeparatorChar で終了しない場合、AltDirectorySeparatorChar を追加する仕様。

2つの文字列を結合してみる。

Debug.WriteLine(Path.Combine("C:", "sample.txt"));
// C:\sample.txt
// "\" 未指定で、自動挿入されることを確認。

Debug.WriteLine(Path.Combine("C:\\", "sample.txt"));
// C:\sample.txt
// エスケープ処理で "\" を指定して、結合することを確認。

Debug.WriteLine(Path.Combine(@"C:\", "sample.txt"));
// C:\sample.txt
// "@" でエスケープ処理を無効かして、結合することを確認。

Debug.WriteLine(Path.Combine(@"C:\\", "sample.txt"));
// C:\\sample.txt
// "\" を二重で指定した場合、そのまま結合されることを確認。

3つ以上の文字列を結合してみる。

Debug.WriteLine(Path.Combine("C:", "abc", "sample.txt"));
// C:\abc\sample.txt
// 3つの文字列を結合できることを確認。

Debug.WriteLine(Path.Combine("C:", "abc", "def", "sample.txt"));
// C:\abc\def\sample.txt
// 4つの文字列を結合できることを確認。

Debug.WriteLine(Path.Combine(@"C:\", "abc", @"def\", "sample.txt"));
// C:\abc\def\sample.txt
// 文字列ごとに "\" の違いがあっても結合できることを確認。

注意:先頭文字が "\" の場合

  • "\" で始まる場合、それより前の文字列が無視される。
Debug.WriteLine(Path.Combine("C:", @"\abc", "sample.txt"));
// \abc\sample.txt

Debug.WriteLine(Path.Combine("C:", "abc", @"\sample.txt"));
// \sample.txt

Debug.WriteLine(Path.Combine("C:", @"\abc", @"\sample.txt"));
// \sample.txt



以上