Получить имя папки из полного пути к файлу

Как получить имя папки из полного пути приложения?

Это путь к файлу ниже,

c:\projects\root\wsdlproj\devlop\beta2\text

Здесь "текст" - это имя папки.

Как я могу получить это имя папки с этого пути?

Ответ 1

См. DirectoryInfo.Name:

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;

Ответ 2

Я думаю, вы хотите получить имя родительской папки из пути к файлу. Это легко получить. Один из способов - создать объект типа FileInfo и использовать его свойство Directory.

Пример:

FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");

String dirName = fInfo.Directory.Name;

Ответ 3

Попробуйте это

var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);

Ответ 4

Вы можете использовать это:

string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();

Ответ 5

Я решил, что нет способа, кроме входа в файловую систему, чтобы узнать, является ли text.txt каталогом или просто файлом. Если вам нужно что-то простое, возможно, вы можете просто использовать:

s.Substring(s.LastIndexOf(@"\"));

Ответ 6

Просто используйте 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"

Ответ 7

В этом случае файл, который вы хотите получить, сохраняется в переменной strpath:

string strPath = Server.MapPath(Request.ApplicationPath) + "/contents/member/" + strFileName;

Ответ 8

Это также можно сделать так:

var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");

Ответ 9

Вот альтернативный метод, который работал для меня без необходимости создания объекта 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);

Ответ 10

На основании предыдущих ответов (но исправлено)

using static System.IO.Path;

var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));

Объяснение GetFileName из источника .NET:

Возвращает части имени и расширения указанного пути. Результирующий строка содержит символы пути, которые следуют за последним символ обратной косой черты ("\"), косой черты ("/") или двоеточия (":") в дорожка. Результирующая строка - это полный путь, если путь не содержит обратной косой черты после удаления косой черты, косой черты или двоеточия. Результирующий строка равна нулю, если путь равен нулю.