[C#][VB.NET]ファイルのパスから、フォルダ(ディレクトリ)名のみ取得する

ファイルのパスをフォルダ名とファイル名に分離し、フォルダ名のみ取得するにはSystem.IO.Path.GetDirectoryName()を使用します。例外やNULLを返す場合があるので注意が必要です。

サンプルコード

GetDirectoryNameを使用する際の注意

次の表はGetDirectoryNameに渡したパスと、その結果です。
GetDirectoryNameに渡した文字列 結果 備考
(空文字列) 例外 System.ArgumentException パスの形式が無効です。
(null) (null)
test (空文字列)
c:\ (null)
c:\test c:\
c:\test\ c:\test
c:\test\. c:\test
c:\test\.. c:\test
c:\test\memo.txt c:\test
c:\test\memo.txt\ c:\test\memo.txt
c:\test\..\test\memo.txt c:\test\..\test
c:\test\..\test\memo.txt\ c:\test\..\test\memo.txt
. (空文字列)
.\ .
.\test .
.\test\ .\test
.\test\memo.txt .\test
.\test\memo.txt\ .\test\memo.txt
.\test\..\test\memo.txt .\test\..\test
.\test\..\test\memo.txt\ .\test\..\test\memo.txt
.. (空文字列)
..\ ..
..\test ..
..\test\ ..\test
..\test\memo.txt ..\test
..\test\memo.txt\ ..\test\memo.txt
..\test\..\test\memo.txt ..\test\..\test
..\test\..\test\memo.txt\ ..\test\..\test\memo.txt
\\networkPC\ (null)
\\networkPC\test (null) "c:\test"や".\test"と挙動が異なる
\\networkPC\test\ \\networkPC\test
\\networkPC\test\memo.txt \\networkPC\test
\\networkPC\test\memo.txt\ \\networkPC\test\memo.txt
\\networkPC\test\..\test\memo.txt \\networkPC\test\..\test
\\networkPC\test\..\test\memo.txt\ \\networkPC\test\..\test\memo.txt
パスで使えない文字を含む 例外「System.ArgumentException "パスに無効な文字が含まれています。"」

検証環境

関連ページ