回答:
絶対パスが確実にわかっている場合は、を使用してくださいPath.GetDirectoryName(path)。
相対名しか取得できない場合は、を使用してくださいnew FileInfo(path).Directory.FullName。
なお、Path及びFileInfo両方の名前空間にありますSystem.IO。
new FileInfo(path).Directory.FullNameどちらの場合でも機能するはずです。
FileInfoオブジェクトを使用している場合、プロパティstringを使用してディレクトリの完全パスの表現を抽出する簡単な方法がありDirectoryNameます。
FileInfo.DirectoryNameMSDNによるプロパティの説明:
ディレクトリの完全パスを表す文字列を取得します。
使用例:
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"