Ответы:
См. DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Я думаю, вы хотите получить имя родительской папки из пути к файлу. Легко получить. Один из способов - создать FileInfo
объект типа и использовать его Directory
свойство.
Пример:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Попробуй это
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Вы можете использовать это:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
делает свое дело.
Просто используйте Path.GetFileName
Здесь - извлеките имя папки из полного пути к папке:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Вот еще кое-что - Извлечь имя папки из полного пути к файлу:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Я решил, что нет другого способа, кроме как войти в файловую систему, чтобы узнать, является ли text.txt каталогом или просто файлом. Если вам нужно что-то простое, возможно, вы можете просто использовать:
s.Substring(s.LastIndexOf(@"\"));
Вот альтернативный метод, который сработал для меня без необходимости создания объекта DirectoryInfo. Ключевым моментом является то, что это GetFileName()
работает, когда в пути нет завершающей косой черты.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Пример:
var list = Directory.EnumerateDirectories(path, "*")
.Select(p => new
{
id = "id_" + p.GetHashCode().ToString("x"),
text = Path.GetFileName(p.TrimEnd(Path.DirectorySeparatorChar)),
icon = "fa fa-folder",
children = true
})
.Distinct()
.OrderBy(p => p.text);
Это также можно сделать так:
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
На основе предыдущих ответов (но исправлено)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Объяснение GetFileName
из источника .NET :
Возвращает имя и расширение заданного пути. Результирующая строка содержит символы пути, следующие за последней обратной косой чертой ("\"), косой чертой ("/") или двоеточием (":") в пути. Результирующая строка представляет собой весь путь, если путь не содержит обратной косой черты после удаления завершающих косых черт, косой черты или символов двоеточия. Результирующая строка имеет значение NULL, если значение path равно NULL.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, и это не то, что было после OP.