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".
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
.
System.IO.Path.GetDirectoryName(filename)
Path.GetDirectoryName(filename);
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.
Vous pouvez utiliser Path.GetDirectoryName
et simplement passer le nom du fichier.
Utilisez le code mentionné ci-dessous pour obtenir le chemin du dossier
Path.GetDirectoryName(filename);
Cela retournera "C:\MyDirectory" dans votre cas
Vous pouvez obtenir le chemin d’application actuel en utilisant:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Bonne chance!
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 .
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));
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\"
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"
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();