web-dev-qa-db-fra.com

Comment puis-je obtenir le répertoire à partir du chemin complet d'un fichier?

Quel est le moyen le plus simple d’obtenir le répertoire dans lequel se trouve un fichier? J'utilise ceci pour définir un répertoire de travail.

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

Dans cet exemple, je devrais obtenir "C:\MyDirectory".

483
Even Mien

Si vous avez vraiment un chemin absolu, utilisez Path.GetDirectoryName(path) .

Si vous ne pouvez obtenir qu'un nom relatif, utilisez new FileInfo(path).Directory.FullName.

Notez que Path et FileInfo se trouvent tous les deux dans l'espace de noms System.IO.

773
Jon Skeet
System.IO.Path.GetDirectoryName(filename)
58
Cherian
Path.GetDirectoryName(filename);
21
Grzenio

Vous pouvez utiliser System.IO.Path.GetDirectory(filename) ou transformer le chemin en FileInfo et utiliser FileInfo.Directory.

Si vous faites autre chose avec le chemin, la FileInfo peut présenter des avantages.

12
Reed Copsey

Vous pouvez utiliser Path.GetDirectoryName et simplement passer le nom du fichier.

lien MSDN

10
Brandon

Utilisez le code mentionné ci-dessous pour obtenir le chemin du dossier

Path.GetDirectoryName(filename);

Cela retournera "C:\MyDirectory" dans votre cas

9
thejustv

Vous pouvez obtenir le chemin d’application actuel en utilisant:

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

Bonne chance!

5
David Castro

Si vous travaillez avec un objet FileInfo, il existe un moyen simple d'extraire une représentation string du chemin complet du répertoire via la propriété DirectoryName.

Description de la propriété FileInfo.DirectoryName via MSDN:

Obtient une chaîne représentant le chemin complet du répertoire.

Exemple d'utilisation:

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

Lien vers le documentation MSDN .

4
Derek W

Tout d'abord, vous devez utiliser l'espace de noms System.IO. Ensuite;

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

ou

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

Vous pouvez utiliser Path.GetFullPath pour la plupart des cas. Mais si vous souhaitez obtenir le chemin également dans le cas où le nom du fichier est relativement situé, vous pouvez utiliser la méthode générique ci-dessous:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

Par exemple:

GetPath("C:\Temp\Filename.txt") return "C:\Temp\"

GetPath("Filename.txt") return current working directory comme "C:\Temp\"

0
Minh Nguyen

Juste au cas où quelqu'un d'autre en aurait besoin, ce que j'ai utilisé pour mon chemin relatif était:

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

Dans mon cas, je devais trouver le nom du répertoire d’un chemin complet (d’un répertoire), alors j’ai simplement fait:

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