ファイルがあるディレクトリを取得する最も簡単な方法は何ですか?これを使って作業ディレクトリを設定しています。
string filename = @"C:\MyDirectory\MyFile.bat";
この例では、 "C:\ MyDirectory"が表示されます。
絶対パスを絶対に知っているなら、 Path.GetDirectoryName(path)
を使ってください。
相対名しか得られない場合は、new FileInfo(path).Directory.FullName
を使用してください。
Path
とFileInfo
はどちらも名前空間System.IO
にあります。
System.IO.Path.GetDirectoryName(filename)
Path.GetDirectoryName(filename);
System.IO.Path.GetDirectory(filename)
を使うことも、パスをFileInfo
に変換してFileInfo.Directory
を使うこともできます。
あなたがパスで他のことをしているならば、FileInfo
は利点を持つかもしれません。
Path.GetDirectoryName
を使用してファイル名を渡すことができます。
以下のコードを使用してフォルダパスを取得してください。
Path.GetDirectoryName(filename);
これは "C:\ MyDirectory" を返します - あなたの場合
現在のアプリケーションパスは次のようにして取得できます。
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
がんばろう!
FileInfo
オブジェクトを使用している場合は、string
プロパティを使用してディレクトリのフルパスのDirectoryName
表現を抽出する簡単な方法があります。
MSDNによるFileInfo.DirectoryName
プロパティの説明:
ディレクトリのフルパスを表す文字列を取得します。
使用例
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
私の場合は、(ディレクトリの)フルパスのディレクトリ名を見つける必要があるので、次のようにしました。
var dirName = path.Split('\\').Last();
まず、System.IO名前空間を使う必要があります。それでは。
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
または
string newPath = Path.GetFullPath(openFileDialog1.FileName));
ほとんどの場合、Path.GetFullPath
を使用できます。しかし、ファイル名が比較的にある場合にもパスを取得したい場合は、以下の一般的な方法を使用できます。
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
例えば:
GetPath("C:\Temp\Filename.txt")
return "C:\Temp\"
GetPath("Filename.txt")
はcurrent working directory
のように"C:\Temp\"
を返します
他の誰かがそれを必要としているのなら、相対パスに使用したものは次のとおりです。
string rootPath = "MyRootDir/MyFolder1/MyFolder2/myFile.pdf";
while (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(rootPath)))
{
rootPath = Path.GetDirectoryName(rootPath);
}
Console.WriteLine(rootPath); //Will print: "MyRootDir"