ドライブ名だけを返すメソッドは用意されていませんが、GetPathRootメソッドでパスからルートディレクトリを取得できるので、これを使うことでドライブ名を取得することができます。
ただし、完全修飾されているパスの場合はホスト名を含めたドライブ名までの部分が返されるため、単にドライブ名だけを取得することはできません。 また、カレントドライブからの相対パスの場合も、ドライブのルートディレクトリ\
が返されるため、ドライブ名は取得できません。 ルートディレクトリを含まない相対パスの場合は、空の文字列が返されます。
Path.GetPathRootメソッドでドライブ名・ルートディレクトリを抽出する
Imports System
Imports System.IO
Class Sample
Shared Sub Main()
For Each p As String In New String() {
"E:\dir\subdir\file.txt", ' 絶対パス (Windows形式)
"/dir/subdir/file.txt", ' 絶対パス (UNIX形式)
"\\127.0.0.1\e$\dir\file.txt", ' UNCパス
"\dir\subdir\file.txt", ' カレントドライブからの相対パス (Windows形式)
".\dir\subdir\file.txt", ' カレントディレクトリからの相対パス (Windows形式)
"./dir/subdir/file.txt", ' カレントディレクトリからの相対パス (UNIX形式)
"file.txt" ' ファイル名のみのパス
}
Console.WriteLine("path = {0}", p)
Console.WriteLine("root = {0}", Path.GetPathRoot(p)) ' パスからドライブ名・ルートディレクトリを抽出する
Console.WriteLine()
Next
End Sub
End Class
実行結果
path = E:\dir\subdir\file.txt root = E:\ path = /dir/subdir/file.txt root = \ path = \\127.0.0.1\e$\dir\file.txt root = \\127.0.0.1\e$ path = \dir\subdir\file.txt root = \ path = .\dir\subdir\file.txt root = path = ./dir/subdir/file.txt root = path = file.txt root =
実行結果
path = E:\dir\subdir\file.txt root = path = /dir/subdir/file.txt root = / path = \\127.0.0.1\e$\dir\file.txt root = path = \dir\subdir\file.txt root = path = .\dir\subdir\file.txt root = path = ./dir/subdir/file.txt root = path = file.txt root =
GetPathRootメソッドの詳細な動作については§.ルートディレクトリの取得・ルートディレクトリからのパスかどうか (GetPathRoot/IsPathRooted)を参照してください。