вместо папки получаю полный путь к ней (c#)
есть вот такой код:
foreach (string dI in Directory.GetDirectories(argument))
{
string dirs += dI + "^";
}
проблема в том что к примеру вместо папки Public я получаю C:\Users\Public
так же я пробовал
string dirs = string.Join("^", Directory.GetDirectory(@"C:\").Select(path => Path.GetDirectoryName(path)));
но он не работает
Ответы (2 шт):
Автор решения: Алексей Обухов
→ Ссылка
тут всего один вариант получения последней папки, который работает для разных случаев:
var dir = @"c:\folder1\folder2";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //folder2 - OK
Console.WriteLine();
dir = @"c:\folder1\folder2\";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1\folder2 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //null - FAIL
Console.WriteLine();
dir = @"c:/folder1/folder2";
Console.WriteLine(Path.GetDirectoryName(dir)); //c:\folder1 - FAIL
Console.WriteLine(new DirectoryInfo(dir).Name); //folder2 - OK
Console.WriteLine(dir.Split('\\').LastOrDefault()); //c:/folder1/folder2 - FAIL
Console.WriteLine();
П.С. напишем теперь полный код получения списка папок внутри заданного родителя (выведем их как команда dir):
static void Main(string[] args)
{
Dir(@"c:\");
}
static void Dir(string argument)
{
string dirs = "";
foreach (string dI in Directory.GetDirectories(argument))
{
dirs += new DirectoryInfo(dI).Name + "\n";
}
Console.WriteLine(dirs);
}
Автор решения: Александр Вовк
→ Ссылка
Попробуйте:
string path = folderBrowserDialog.SelectedPath;
Path.GetFileName(path);