web-dev-qa-db-ja.com

ファイルのフルパスからディレクトリを取得する方法

ファイルがあるディレクトリを取得する最も簡単な方法は何ですか?これを使って作業ディレクトリを設定しています。

string filename = @"C:\MyDirectory\MyFile.bat";

この例では、 "C:\ MyDirectory"が表示されます。

469
Even Mien

絶対パスを絶対に知っているなら、 Path.GetDirectoryName(path) を使ってください。

相対名しか得られない場合は、new FileInfo(path).Directory.FullNameを使用してください。

PathFileInfoはどちらも名前空間System.IOにあります。

746
Jon Skeet
System.IO.Path.GetDirectoryName(filename)
55
Cherian
Path.GetDirectoryName(filename);
21
Grzenio

System.IO.Path.GetDirectory(filename)を使うことも、パスをFileInfoに変換してFileInfo.Directoryを使うこともできます。

あなたがパスで他のことをしているならば、FileInfoは利点を持つかもしれません。

12
Reed Copsey

Path.GetDirectoryNameを使用してファイル名を渡すことができます。

MSDNリンク

10
Brandon

以下のコードを使用してフォルダパスを取得してください。

Path.GetDirectoryName(filename);

これは "C:\ MyDirectory" を返します - あなたの場合

9
thejustv

現在のアプリケーションパスは次のようにして取得できます。

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

がんばろう!

5
David Castro

FileInfoオブジェクトを使用している場合は、stringプロパティを使用してディレクトリのフルパスのDirectoryName表現を抽出する簡単な方法があります。

MSDNによるFileInfo.DirectoryNameプロパティの説明:

ディレクトリのフルパスを表す文字列を取得します。

使用例

string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"

MSDNドキュメントへのリンク

4
Derek W

私の場合は、(ディレクトリの)フルパスのディレクトリ名を見つける必要があるので、次のようにしました。

var dirName = path.Split('\\').Last();
2
Amir No-Family

まず、System.IO名前空間を使う必要があります。それでは。

string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);

または

string newPath = Path.GetFullPath(openFileDialog1.FileName));
1
Umut D.

ほとんどの場合、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\"を返します

0
Minh Nguyen

他の誰かがそれを必要としているのなら、相対パスに使用したものは次のとおりです。

string rootPath = "MyRootDir/MyFolder1/MyFolder2/myFile.pdf";
while (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(rootPath))) 
{
    rootPath = Path.GetDirectoryName(rootPath);
} 
Console.WriteLine(rootPath); //Will print: "MyRootDir"
0
Sal