web-dev-qa-db-fra.com

obtenir le répertoire du chemin complet

Si j'ai:

C:\temp\foo\bar \

( NOTE: bar est un répertoire)

comment puis-je analyser:

bar

22
leora

Je l'ai compris.

DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;
42
leora

Essayer

System.IO.Path.GetFileName("C:\\temp\\foo\\bar");
21
Program.X

Il suffit d'utiliser:

string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;      

Selon MSDN, cela retourne le nom du répertoire, pas le chemin complet.

Lien vers la bibliothèque MSDN

J'espère que cela t'aides.........

11
norbertB

On dirait qu'un groupe de personnes ont retiré leurs réponses, ce qui est peut-être une honte.

Celui-ci mérite d'être mentionné, mais uniquement pour la qualité "apprendre à un homme à pêcher" - il est court, élégant et fait de deux choses distinctes qui, une fois apprises, peuvent être réappliquées à d'autres problèmes.

string lastPiece = wholePath.Split('\\').Last();

Last lancera si la liste est vide.

6
Daniel Earwicker

Le moyen le plus simple de procéder sans créer une nouvelle instance DirectoryInfo est d'utiliser la méthode Path.GetFileName static. Ceci est situé dans System.IO.

using System.IO;

string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");

La variable serait définie sur "Dossier2".

C'est bien plus efficace que la création d'une nouvelle instance de la classe DirectoryInfo!

5
Matthew M.

Je peux penser à 4 façons instantanément

1

  • Si la chaîne se termine par une barre oblique, supprimez-la
  • Utilisez Path.GetFilename (ou de nombreuses autres méthodes System.IO)

2

  • Fractionner la chaîne sur les barres obliques dans un tableau
  • Récupère le dernier index du tableau

3

  • Créer une classe Uri avec elle dans le constructeur
  • Utilisez la propriété Segments

4

  • La façon dont linq quelqu'un mentionné ci-dessus
4
Chris S
string dirname = new DirectoryInfo(path).Name;  
Console.WriteLine(dirname);   
1
Razvan

Essaye ça

string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;
0
Anuraj

Sous Unix, cela s'appelle le nom de base, un rapide Google a créé ce lien pour une version C # . Je suis sûr qu'il y en a d'autres ...

0
MrTelly

si les réponses ci-dessus ne répondent pas à vos besoins, pourquoi ne pas simplement sous-chaîne de la chaîne de la dernière.

string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);

bien sûr, vous devriez vérifier si le nom original du nom original ne se termine pas sur un\et si le nom original du nom original est plus long que zéro et contient en fait des caractères \.

0
Wim Haanstra