Comment puis-je obtenir le répertoire 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.

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

Dans cet exemple, je devrais avoir “C: \ MyDirectory”.

Si vous avez définitivement un chemin absolu, utilisez Path.GetDirectoryName(path) .

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

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

 System.IO.Path.GetDirectoryName(filename) 
 Path.GetDirectoryName(filename); 

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

Si vous faites d’autres choses avec le chemin, le FileInfo peut avoir des avantages.

Vous pouvez utiliser Path.GetDirectoryName et simplement transmettre le nom de fichier.

Lien MSDN

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

 Path.GetDirectoryName(filename); 

Cela retournera “C: \ MyDirectory” dans votre cas

Si vous travaillez avec un object FileInfo , il existe un moyen simple d’extraire une représentation sous forme de ssortingng du chemin d’access 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 d’access complet du répertoire.

Exemple d’utilisation:

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

Lien vers la documentation MSDN .

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

 ssortingng AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToSsortingng(); 

Bonne chance!

Tout d’abord, vous devez utiliser l’espace de noms System.IO. Alors;

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

ou

 ssortingng newPath = Path.GetFullPath(openFileDialog1.FileName)); 

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

 var dirName = path.Split('\\').Last(); 

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

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

Par exemple:

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

GetPath("Filename.txt") renvoie current working directory tel que "C:\Temp\"

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

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