string relative - Obter o nome do diretório atual(última parte)em C#




path getbasepath (9)

Preciso obter a última parte do diretório atual, por exemplo, em /Users/smcho/filegen_from_directory/AIRPassthrough , preciso obter o AIRPassthrough .

Com python, posso obtê-lo com este código.

import os.path

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

Ou

print os.path.basename(path)

Como posso fazer a mesma coisa com c #?

ADICIONADO

Com a ajuda dos respondentes, encontrei o que precisava.

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);

Answers

Bem, para responder exatamente ao título da sua pergunta :-)

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);

var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

Isso funciona se o caminho contiver separadores de barra ou separadores de barra invertida.


Tente isto:

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

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

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

O código pode estar desativado (não testei), mas a ideia deve funcionar


A maneira mais fácil de obter o nome da pasta é inicializar uma instância de DirectoryInfo com o caminho.

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

Isso funciona da mesma forma se o caminho terminar com ou sem um separador de diretórios e se um separador para frente ou para trás for usado.


Esta é uma resposta ligeiramente diferente, dependendo do que você tem. Se você tiver uma lista de arquivos e precisar obter o nome do último diretório em que o arquivo está, poderá fazer isso:

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

Isso retornará "2938_parentid"


em vez de usar o '/' para a chamada para dividir, é melhor usar o Path.DirectorySeparatorChar :

igual a:

path.split(Path.DirectorySeparatorChar).Last() 

Você está procurando por Path.GetFileName .
Observe que isso não funcionará se o caminho terminar em um \ .


Isso funciona perfeitamente bem comigo :)

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

public static TValue GetFieldValue<TValue>(this object instance, string name)
{
    var type = instance.GetType(); 
    var field = type.GetFields(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance).FirstOrDefault(e => typeof(TValue).IsAssignableFrom(e.FieldType) && e.Name == name);
    return (TValue)field?.GetValue(instance);
}

public static TValue GetPropertyValue<TValue>(this object instance, string name)
{
    var type = instance.GetType();
    var field = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance).FirstOrDefault(e => typeof(TValue).IsAssignableFrom(e.PropertyType) && e.Name == name);
    return (TValue)field?.GetValue(instance);
}




c# string filepath