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 #?
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);
Vous recherchez Path.GetFileName
.
Notez que cela ne fonctionnera pas si le chemin se termine par un \
.
Tu pourrais essayer:
var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;
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é.
Eh bien, pour exactement répondez au titre de votre question :-)
var lastPartOfCurrentDirectoryName =
Path.GetFileName(Environment.CurrentDirectory);
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"
plutôt que d'utiliser le '/' pour l'appel à diviser, il vaut mieux utiliser le Path.DirectorySeparatorChar
:
ainsi:
path.split(Path.DirectorySeparatorChar).Last()
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.
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
Vous pouvez essayer ci-dessous le code:
Path.GetFileName(userpath)
Cela fonctionne parfaitement bien avec moi :)
Path.GetFileName(path.TrimEnd('\\')