web-dev-qa-db-fra.com

Récupère le nom de répertoire courant (la dernière partie) en C #

Je dois obtenir la dernière partie du répertoire en cours, par exemple à partir de /Users/smcho/filegen_from_directory/AIRPassthrough, je dois obtenir AIRPassthrough

Avec python, je peux l'obtenir avec ce code.

import os.path

path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]

Ou

print os.path.basename(path)

Comment puis-je faire la même chose avec C #?

AJOUTÉE

Avec l'aide des répondeurs, j'ai trouvé ce dont j'avais besoin.

using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName  = fullPath.Split(Path.DirectorySeparatorChar).Last();

ou 

string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);
131
prosseek

Vous recherchez Path.GetFileName .
Notez que cela ne fonctionnera pas si le chemin se termine par un \

111
SLaks

Tu pourrais essayer:

var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;
143
codybartfast

Le moyen le plus simple d'obtenir le nom du dossier consiste à initialiser une instance de DirectoryInfo avec le chemin.

string path = "/Users/smcho/filegen_from_directory/AIRPassthrough";
string result = new DirectoryInfo(path).Name;

Cela fonctionne de la même manière si le chemin se termine avec ou sans séparateur de répertoire et si un séparateur avant ou arrière est utilisé.

25
Simon Bondo

Eh bien, pour exactement répondez au titre de votre question :-)

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);
10
Jakob Möllås

Ceci est une réponse légèrement différente, selon ce que vous avez. Si vous avez une liste de fichiers et devez obtenir le nom du dernier répertoire dans lequel se trouve le fichier, vous pouvez le faire:

string path = "/attachments/1828_clientid/2938_parentid/somefiles.docx";
string result = new DirectoryInfo(path).Parent.Name;

Cela retournera "2938_parentid"

9
ProVega

plutôt que d'utiliser le '/' pour l'appel à diviser, il vaut mieux utiliser le Path.DirectorySeparatorChar:

ainsi:

path.split(Path.DirectorySeparatorChar).Last() 
8
Muad'Dib
var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

Cela fonctionne si le chemin contient des séparateurs de barre oblique ou des séparateurs de barre oblique inverse.

4
Holf

Essaye ça:

String newString = "";
Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough";

int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length());

newString = oldString.subString(indexOfLastSlash, oldString.length());

Le code est peut-être désactivé (je ne l'ai pas testé) mais l'idée devrait fonctionner

2
Stanley Cup Phil

Vous pouvez essayer ci-dessous le code:

Path.GetFileName(userpath)

0
Code_Beginner

Cela fonctionne parfaitement bien avec moi :)

Path.GetFileName(path.TrimEnd('\\')
0
Akshay