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:MyDirectoryMyFile.bat";
Dans cet exemple, je devrais obtenir "C:MyDirectory".
12 réponses
Si vous avez définitivement 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
.
Vous pouvez utiliser System.IO.Path.GetDirectory(filename)
, ou tournez-la dans un tracé FileInfo
, et l'utilisation FileInfo.Directory
.
Si vous faites d'autres choses avec le chemin, le FileInfo
peut avoir des avantages.
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 objet FileInfo
, Il existe un moyen facile 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 la documentation MSDN .
Vous pouvez obtenir le chemin de L'Application en cours en utilisant:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Bonne Chance!
Dans mon cas, j'avais besoin de trouver le nom du répertoire d'un chemin complet (d'un répertoire) donc j'ai simplement fait:
var dirName = path.Split('\\').Last();
Tout d'abord, vous devez utiliser System.IO espace de noms. Alors;
string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);
Ou
string newPath = Path.GetFullPath(openFileDialog1.FileName));
, Vous pouvez utiliser Path.GetFullPath
pour la plupart des cas.
Mais si vous voulez obtenir le chemin aussi dans le cas du nom de fichier est relativement situé alors 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")
de retour "C:\Temp\"
GetPath("Filename.txt")
de retour current working directory
comme "C:\Temp\"
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"