Est-ce que quelque chose est construit dans System.IO.Path
qui me donne juste le chemin du fichier?
Par exemple, si j'ai un string
@ "c:\serveur web\public\maSociété\configs\promo.xml",
y at-il une méthode BCL qui me donnera
"c:\serveur web\public\maSociété\configs \"?
Path.GetDirectoryName()
... mais vous devez savoir que le chemin que vous lui transmettez contient un nom de fichier; il supprime simplement le dernier bit du chemin, qu'il s'agisse d'un nom de fichier ou d'un nom de répertoire (il n'a en fait aucune idée de quoi).
Vous pouvez d'abord valider en testant File.Exists()
et/ou Directory.Exists()
sur votre chemin pour voir si vous devez appeler Path.GetDirectoryName
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm"));
Path.GetDirectoryName()
renvoie le nom du répertoire. Vous pouvez donc appeler Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
pour le contenu souhaité.
string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml";
string currentDirectory = Path.GetDirectoryName(fileAndPath);
string fullPathOnly = Path.GetFullPath(currentDirectory);
Utilisez 'GetParent ()' comme indiqué, cela fonctionne bien. Ajouter une vérification d'erreur selon vos besoins.
var fn = openFileDialogSapTable.FileName;
var currentPath = Path.GetFullPath( fn );
currentPath = Directory.GetParent(currentPath).FullName;
Je l'ai utilisé et ça marche bien:
string[] filePaths = Directory.GetFiles(Path.GetDirectoryName(dialog.FileName));
foreach (string file in filePaths)
{
if (comboBox1.SelectedItem.ToString() == "")
{
if (file.Contains("c"))
{
comboBox2.Items.Add(Path.GetFileName(file));
}
}
}