回答:
絶対パスが確実にわかっている場合は、を使用してくださいPath.GetDirectoryName(path)
。
相対名しか取得できない場合は、を使用してくださいnew FileInfo(path).Directory.FullName
。
なお、Path
及びFileInfo
両方の名前空間にありますSystem.IO
。
new FileInfo(path).Directory.FullName
どちらの場合でも機能するはずです。
FileInfo
オブジェクトを使用している場合、プロパティstring
を使用してディレクトリの完全パスの表現を抽出する簡単な方法がありDirectoryName
ます。
FileInfo.DirectoryName
MSDNによるプロパティの説明:
ディレクトリの完全パスを表す文字列を取得します。
使用例:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
MSDNドキュメントへのリンク。
Path.GetFullPath
ほとんどの場合に使用できます。しかし、ファイル名が比較的配置されている場合にもパスを取得したい場合は、以下の一般的な方法を使用できます。
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
例えば:
GetPath("C:\Temp\Filename.txt")
返す "C:\Temp\"
GetPath("Filename.txt")
のcurrent working directory
ように戻る"C:\Temp\"
私の場合、(ディレクトリの)フルパスのディレクトリ名を見つける必要があったので、次のようにしました。
var dirName = path.Split('\\').Last();
"C:\MyDirectory"
ありませんMyDirectory
。文字列操作メソッドを使用するためのアドバイスは危険であり、多くのトラップがあり、むしろ専用Path
メソッドを使用します。
Path.GetDirectoryName(Context.Parameters ["assemblypath"])
Path.GetDirectoryName
他の多くの回答(承認された回答を含む)で言及されている
@"C:\MyDirectory\MyFile.bat"