Відповіді:
Дивіться 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, якщо шлях є null.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, і це не те, що було після ОП.