2010-03-09 12 views
0

J'ai essayé d'utiliser Path.GetDirectoryName() mais cela ne fonctionne pas.Comment puis-je obtenir le nom du répertoire d'un chemin?

Ce que je suis en train de faire est de/home/nubela/test/some_folder, je veux obtenir "some_folder"

Comment puis-je faire cela? La méthode devrait fonctionner pour Windows/Linux (Mono)

Merci!

Répondre

1

Si vous avez le chemin comme une chaîne vous pouvez déjà utiliser cette méthode pour extraire le répertoire le plus bas niveau:

String dir 
    = yourPath.Substring(
      yourPath.LastIndexOf(Path.DirectorySeparatorChar) + 1); 

Étant donné que ce code utilise Path.DirectorySeparatorChar il est indépendant de la plateforme.

6

Utilisez plutôt Path.GetFileName? Ces fonctions fonctionnent seulement sur la chaîne que vous fournissez et ne se soucient pas si c'est un répertoire ou un chemin de fichier.

+0

Je l'espère bien, nous disons toujours d'utiliser les fonctions de chemin pour la portabilité. –

+0

C'est la bonne façon. Le nom de la méthode est trompeur, mais ce qu'il fait c'est juste obtenir la partie finale du chemin comme le veut nubela. Attention à la mise en garde spéciale, si vous lui donnez un chemin comme "C: \ temp \" il retournera une chaîne vide car il obtient juste ce qui existe après le dernier séparateur de chemin, qui est à la fin de la chaîne dans ce cas. Voir http://msdn.microsoft.com/en-us/library/system.io.path.getfilename.aspx – Monoman

0

Ma première idée serait d'utiliser System.IO.Path.GetDirectoryName, aussi. Mais vous pouvez essayer une expression régulière pour obtenir la sous-chaîne finale de votre chaîne. Here is an answer in StackOverflow, en utilisant des expressions régulières, qui répond à cela.

Questions connexes