web-dev-qa-db-fra.com

Obtenir le chemin complet sans nom de fichier à partir du chemin qui inclut le nom de fichier

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 \"?

178
CantSleepAgain

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

217
Andrew Barber
Console.WriteLine(Path.GetDirectoryName(@"C:\hello\my\dear\world.hm")); 
63
explorer

Path.GetDirectoryName() renvoie le nom du répertoire. Vous pouvez donc appeler Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar pour le contenu souhaité.

51
Jon Hanna
    string fileAndPath = @"c:\webserver\public\myCompany\configs\promo.xml";

    string currentDirectory = Path.GetDirectoryName(fileAndPath);

    string fullPathOnly = Path.GetFullPath(currentDirectory);
7
Kobie Williams

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;
5
kevinwaite

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));
        }
    }
}
4
Karam