Path.GetDirectoryNameでフォルダパスを取得

パス文字列からフォルダパスを取得したいときはPath.GetDirectoryNameを使います。

Path.GetDirectoryName メソッド (String) (System.IO)

このメソッド名だとフォルダパスじゃなくてフォルダ名を取得できる感じが・・・というのは置いておいて。

上記にもサンプルがのっていますが、他にもいくつかペタっとしておきます。

// よくある絶対パス
Console.WriteLine(Path.GetDirectoryName(@"c:\folder\file.txt"));
// c:\folder

// 区切り文字で終わっているパス
// 先頭から最後の区切り文字まで(区切り文字は含まない)の文字列を取得する
Console.WriteLine(Path.GetDirectoryName(@"c:\folder1\folder2\"));
// c:\folder1\folder2

// 区切り文字は"\"でも"/"でも大丈夫
Console.WriteLine(Path.GetDirectoryName(@"c:/folder/file.txt"));
// c:\folder

// 相対パスでも大丈夫みたい
Console.WriteLine(Path.GetDirectoryName(@"folder\file.txt"));
// folder

// 相対パスその2
Console.WriteLine(Path.GetDirectoryName(@"..\..\file.txt"));
// ..\..

// ルート
Console.WriteLine(Path.GetDirectoryName(@"c:\") == null ? "null" : "nullではない");
// null

// ルートその2
Console.WriteLine(Path.GetDirectoryName(@"\\server\") == null ? "null" : "nullではない");
// null

Path.GetDirectoryNameはパス文字列の先頭から最後の区切り文字まで(区切り文字は含まない)の文字列を取得するメソッドということで。ただしパス文字列がルートの場合はnullになると。