Как получить имя папки из полного пути приложения?
Это путь к файлу ниже,
c:\projects\root\wsdlproj\devlop\beta2\text
Здесь "текст" - это имя папки.
Как я могу получить это имя папки с этого пути?
Как получить имя папки из полного пути приложения?
Это путь к файлу ниже,
c:\projects\root\wsdlproj\devlop\beta2\text
Здесь "текст" - это имя папки.
Как я могу получить это имя папки с этого пути?
См. 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);
Вы можете использовать это:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
Я решил, что нет способа, кроме входа в файловую систему, чтобы узнать, является ли text.txt каталогом или просто файлом. Если вам нужно что-то простое, возможно, вы можете просто использовать:
s.Substring(s.LastIndexOf(@"\"));
Просто используйте 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"
В этом случае файл, который вы хотите получить, сохраняется в переменной strpath:
string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;
Это также можно сделать так:
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Вот альтернативный метод, который работал для меня без необходимости создания объекта 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);
На основании предыдущих ответов (но исправлено)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Объяснение GetFileName
из источника .NET:
Возвращает части имени и расширения указанного пути. Результирующий строка содержит символы пути, которые следуют за последним символ обратной косой черты ("\"), косой черты ("/") или двоеточия (":") в дорожка. Результирующая строка - это полный путь, если путь не содержит обратной косой черты после удаления косой черты, косой черты или двоеточия. Результирующий строка равна нулю, если путь равен нулю.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");