25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,259
1
.NET 4.x

Как извлечь имя папки из пути?

23.11.2018, 01:16. Показов 18213. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как правильно извлечь из полного пути к файлу имя папки ?

Попробовал такой способ:
C#
1
2
var dn = Path.GetDirectoryName(fileName);
dn = dn.Substring(dn.LastIndexOf('\\'));
Работает вроде но добавляет слэш \ вначале (как его убрать?)
Есть ли способы ещё как можно извлечь имя папки?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2018, 01:16
Ответы с готовыми решениями:

Извлечь имя папки файла начиная с определенной папки
Собстно вопрос. Как извлечь имя папки файла начиная с определенной папки Например полное имя:...

Как извлечь имя файла без его полного пути и расширения?
как извлечь имя файла без его полного пути и расширения? какой код для кнопки сохранить в...

Получить имя конечной папки из пути
Есть строка, представляющая собои путь Например, string s1 =@"d:\tralya\tralylya\aaa"; Как получить...

Как извлечь имя файла из полного пути к файлу?
Вот к примеру, я загрузил файл, и в edt1.Text - он записал путь к файлу... C:\Program...

11
Администратор
Эксперт .NET
16936 / 13303 / 5201
Регистрация: 17.03.2014
Сообщений: 27,224
Записей в блоге: 1
23.11.2018, 01:33 2
Лучший ответ Сообщение было отмечено chaleureux как решение

Решение

chaleureux,
C#
1
var dn = Path.GetFileName(Path.GetDirectoryName(fileName));
или (в рамках твоего кода)
C#
1
2
var dn = Path.GetDirectoryName(fileName);
dn = dn.Substring(dn.LastIndexOf('\\')+1);
1
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,259
23.11.2018, 01:41  [ТС] 3
OwenGlendower Так работает, благодарю.
Вот этот способ получает папку последнюю, а как получить предпоследнюю папку из пути?

Вот у меня такой путь:
Код
C:\Проекты\Задания\Домашка\НовыеФайлы\MarioSound
Как мне получить папку Домашка ( к примеру ).
0
Администратор
Эксперт .NET
16936 / 13303 / 5201
Регистрация: 17.03.2014
Сообщений: 27,224
Записей в блоге: 1
23.11.2018, 02:29 4
chaleureux,
C#
1
2
3
string path = @"C:\Проекты\Задания\Домашка\НовыеФайлы\MarioSound";
string[] names = path.Split('\\');
Console.WriteLine(names[names.Length-3]);
1
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,259
23.11.2018, 10:41  [ТС] 5
OwenGlendower, А как с начала пути ( строчки ) расчитать?
0
Администратор
Эксперт .NET
16936 / 13303 / 5201
Регистрация: 17.03.2014
Сообщений: 27,224
Записей в блоге: 1
23.11.2018, 12:28 6
chaleureux, мне непоятно что ты имеешь в виду. Поясни.
0
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,259
23.11.2018, 22:54  [ТС] 7
Цитата Сообщение от OwenGlendower Посмотреть сообщение
мне непоятно что ты имеешь в виду. Поясни.
Как узнать имя папку с начала пути? Имеется в виду после @"C:\" а не с последней папки как в вашем примере names[names.Length-3]
0
Администратор
Эксперт .NET
16936 / 13303 / 5201
Регистрация: 17.03.2014
Сообщений: 27,224
Записей в блоге: 1
23.11.2018, 23:07 8
chaleureux, нужно указать соответствующий индекс в массиве. Они (индексы) начинаются с 0 и далее идут 1, 2, 3, 4, ... Какой индекс нужен тебе подумай самостоятельно.
0
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,259
24.11.2018, 00:47  [ТС] 9
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Какой индекс нужен тебе подумай самостоятельно.
Это я понял =) Видимо Вы меня не так поняли у Вас пример берётся от конца строки и считается индекс, а как сделать наоборот от начала строки?
Я пробовал Ваш пример он брал только с последней
P.S: Нужно с лева на право найти нужный индекс, а не с права налево) как-то так. Спасибо за понимание =)
0
Администратор
Эксперт .NET
16936 / 13303 / 5201
Регистрация: 17.03.2014
Сообщений: 27,224
Записей в блоге: 1
24.11.2018, 01:26 10
chaleureux, думаю вопрос я понял верно. Чего я не могу понять так это в чем именно тут сложность даже для неопытного программиста. И поэтому и предлагаю додуматься до решения самостоятельно.

Добавлено через 15 минут
Берем код
C#
1
2
string path = @"C:\Проекты\Задания\Домашка\НовыеФайлы\MarioSound";
string[] names = path.Split('\\');
Индексы для массива names тогда будут такими:
Элементы массива C: Проекты Задания Домашка НовыеФайлы MarioSound
Индексы с начала 0 1 2 3 4 5
Индексы с конца names.Length-6 names.Length-5 names.Length-4 names.Length-3 names.Length-2 names.Length-1
0
5 / 5 / 2
Регистрация: 04.01.2014
Сообщений: 36
29.04.2021, 12:48 11
с первой можно получить вот так
C#
1
2
3
string path = @"C:\Проекты\Задания\Домашка\НовыеФайлы\MarioSound";
string[] names = path.Split('\\');
Console.WriteLine(names[1]);
0
Эксперт .NET
17678 / 12864 / 3365
Регистрация: 17.09.2011
Сообщений: 21,132
29.04.2021, 19:26 12
Нынче в моде работа в линупс-контейнере под докером — не стоит полагаться на то, что разделителем пути будет \.
0
29.04.2021, 19:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2021, 19:26
Помогаю со студенческими работами здесь

Получить имя папки из пути (FolderBrowserDialog)
Здравствуйте! Есть вот такой вот код: Me.FolderBrowserDialog.SelectedPath Мне из него...

vbc : error BC30138: Невозможно создать временный файл на пути 'C: emp ': Неверно задано имя папки.
ни с того ни с сего все сайты начали давать ошибку vbc : error BC30138: Невозможно создать...

Можно ли во время выполнения "извлечь" имя приложения, имя класса, имя исполняемого метода и пр. ?
или какие-нубдь "квазипеременные" компилятора, позволяющие их использовать?

Как извлечь имя переменной?
Хотел написать функцию которая будет создавать переменную из названии другой (второй) переменной и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru