Как напечатать только имя последней папки массива - PullRequest
1 голос
/ 29 января 2020

Код выглядит следующим образом:

DirectoryInfo d = new DirectoryInfo(@"c:\a\folder");
DirectoryInfo[] Dirs = d.GetDirectories();
foreach (var item in Dirs)
{ 
Console.WriteLine("The folders:{0}", item.ToString());
}

И он печатает это:

Папки: c: \ a \ folder \ foldertozip

Но я хочу только напечатать foldertozip . Как я могу это сделать? Спасибо за помощь.

Ответы [ 3 ]

3 голосов
/ 29 января 2020

Просто измените item.ToString() на item.Name:

DirectoryInfo d = new DirectoryInfo(@"c:\a\folder");
DirectoryInfo[] Dirs = d.GetDirectories();
foreach (var item in Dirs)
{ 
    Console.WriteLine("The folders:{0}", item.Name);
}
1 голос
/ 29 января 2020

item -> будет содержать весь каталог, так что выполнение toString не подходит, если вы хотите только имя папки / вложенной папки

посмотрите, есть ли метод "Name", который вы можете использовать, вызвав его как item.Name в console.WriteLine () вместо item.toString ()

foreach (var item in Dirs)
{ 
    Console.WriteLine("The folders:{0}", item.Name());
}

или вы можете сделать это: Получение имени папки из пути

Возможно, я бы использовал что-то вроде:

string path = "C:/folder1/folder2/file.txt";

string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );

Внутренний вызов GetDirectoryName вернет полный путь, а внешний вызов GetFileName () вернет последний компонент пути - это будет имя папки.

Этот подход работает независимо от того, существует ли путь на самом деле. Этот подход, однако, опирается на путь, изначально заканчивающийся именем файла. Если неизвестно, заканчивается ли путь в имени файла или имени папки - тогда необходимо проверить фактический путь, чтобы увидеть, существует ли сначала файл / папка в этом месте.

1 голос
/ 29 января 2020

Вы можете разделить и получить последние

item.ToString().Split("\\").Last();

Или, что еще лучше, использовать свойство DirectoryInfo.Name: https://docs.microsoft.com/en-us/dotnet/api/system.io.directoryinfo.name?view=netframework-4.8#System_IO_DirectoryInfo_Name

Это имя Свойство возвращает только имя каталога, например «Bin». Чтобы получить полный путь, например "c: \ public \ Bin", используйте свойство FullName.

...