Лучший способ получить одноуровневые папки - PullRequest
2 голосов
/ 25 декабря 2011

Рассмотрим сценарий, подобный этому

Root

| ----- a

| ----- b (текущая папка)

| ----- c

| ----- и т. Д. *

  • Текущая папка b
  • Нам нужно найти все папки на том же уровне, что и b .
  • Другими словами, какой лучший способ получить ' a 'и ' с '?

Ответы [ 2 ]

3 голосов
/ 25 декабря 2011

Независимо от системы:

  • Сохраните текущую папку в некоторой переменной нуля.
  • cd вверх, так что в вашем примере вы находитесь в корневой папке
  • Список всех папок там.Это должно дать вам a , b , c , d ...
  • Поместите этот список в какой-нибудь подходящийструктура данных.
  • удалить папку, которую вы сохранили на первом шаге, из указанной структуры данных (поскольку вам нужны только братья и сестры, а не сама начальная папка).
2 голосов
/ 25 декабря 2011

Я бы следовал шагам, аналогичным @jstarek, но я бы бросил второй.

Получите полный путь к папке b, извлеките папку b из пути, перечислите каталоги по этому пути и исключите папку b из полученного набора.

Если вы хотите получить информацию, более специфичную для языка программирования, укажите, какой язык вы используете. Вы упомянули WinForms, так что я предполагаю, что это будет .Net? Если это так, в .Net Framework уже есть классы, предназначенные для выполнения этой задачи.

EDIT:

Если вы используете .Net, взгляните на класс DirectoryInfo. У него есть метод GetDirectories, который позволяет очень легко перечислять каталоги под данным каталогом. Он также имеет перегрузки для поиска и т. Д.

Когда я использовал это в прошлом, исключения могут генерироваться, если у пользователя, запускающего программу, нет разрешений для рассматриваемой папки.

Вот ссылка на образец метода DirectoryInfo GetDirectory: http://msdn.microsoft.com/en-us/library/s7xk2b58.aspx#Y798

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...