Переход к родительской папке в файловом проводнике, написанном на консоли c #

ОБНОВЛЕНО:

Этот код будет работать как обычный проводник файлов WindowsFormApplication.

Когда вы вводите идентификатор для каждой папки (у каждого файла и папки будет идентификатор), в нем будут отображаться файлы и папки.

Я хочу, чтобы пользователь входил в консоль «..» назад на один шаг (родительский каталог). Я имею в виду сделать что-нибудь вроде "cd .." в CMD

Этот код будет исследовать дочерние папки (и все в порядке), но я не знаю, как вернуться в родительскую папку (я знаю, что должен использовать Directory.GetParent и я знаю, как его использовать, я просто хочу знать, где мне его поместить в коде):

        while (true)
        {
            var select2 = Convert.ToInt32(Console.ReadLine());
                var dirDir = Directory.GetDirectories(dirDrive[select2]);
                var fileDir = Directory.GetFiles(dirDrive[select2]);
                for (var j = 0; j < dirDir.Length; j++)
                    Console.WriteLine("{0})\t{1}", j, Path.GetFileName(dirDir[j].TrimEnd(Path.DirectorySeparatorChar)));
                for (var k = dirDir.Length; k < fileDir.Length; k++)
                    Console.WriteLine("{0})\t{1}", k, Path.GetFileName(fileDir[k]));

                dirDrive = dirDir;
        }

Здесь вы можете увидеть коды, которые я добавил (закомментированные коды), но он выйдет из строя, потому что у меня нет папки с идентификатором «..» в моем массиве, и он скажет «Индекс был вне границ массива ".

 while (true)
        {
            var select2 = Convert.ToInt32(Console.ReadLine());
            //if (Convert.ToString(select2) != "..")
            //{
                var dirDir = Directory.GetDirectories(dirDrive[select2]);
                var fileDir = Directory.GetFiles(dirDrive[select2]);
                for (var j = 0; j < dirDir.Length; j++)
                    Console.WriteLine("{0})\t{1}", j, Path.GetFileName(dirDir[j].TrimEnd(Path.DirectorySeparatorChar)));
                for (var k = dirDir.Length; k < fileDir.Length; k++)
                    Console.WriteLine("{0})\t{1}", k, Path.GetFileName(fileDir[k]));

                dirDrive = dirDir;
            //}
            //else
            //{
            //    var dirDir = Directory.GetDirectories(Path.GetDirectoryName(dirDrive[select2]));//Error occurs here
            //    var fileDir = Directory.GetFiles(dirDrive[select2]);
            //    for (var j = 0; j < dirDir.Length; j++)
            //        Console.WriteLine("{0})\t{1}", j, Path.GetFileName(dirDir[j].TrimEnd(Path.DirectorySeparatorChar)));
            //    for (var k = dirDir.Length; k < fileDir.Length; k++)
            //        Console.WriteLine("{0})\t{1}", k, Path.GetFileName(fileDir[k]));
            //    dirDrive = dirDir;
            //}
        }

Это весь код: pastebin, на случай, если вы захотите попробовать.

МОЙ ВОПРОС: я использую этот код для просмотра дочерних папок. Я хочу знать, как я могу попасть в родительскую папку?

Спасибо всем программистам, которые помогли мне в прошлый раз.


person DewinaTwice    schedule 30.08.2017    source источник
comment
Here i added this lines for the purpose but it will crash and say "Index was outside the bounds of the array." На какой строке?   -  person mjwills    schedule 30.08.2017
comment
В чем конкретно вопрос? Мой код не работает, скажите, как исправить, он недостаточно конкретен. Действительно ли вы получаете вопрос об исключении Index out of bounds? Вы спрашиваете, как выбрать путь и отрубить последнюю часть, чтобы получить ее родителя? Пожалуйста, будьте более конкретными.   -  person Lasse V. Karlsen    schedule 30.08.2017
comment
я имею в виду первую строку в else {} и само if {} @mjwills   -  person DewinaTwice    schedule 30.08.2017
comment
@DewinaTwice Вы можете поместить это в свой пост, а не в качестве комментария.   -  person mjwills    schedule 30.08.2017
comment
Когда генерируется исключение, каково значение select2? dirDrive.Count()?   -  person mjwills    schedule 30.08.2017
comment
проблема в том, что в while{ } как я могу вернуться на один шаг назад, если пользователь набрал 999.   -  person DewinaTwice    schedule 30.08.2017
comment
он показывает число 999. и да, это абсолютно вне пределов досягаемости   -  person DewinaTwice    schedule 30.08.2017
comment
спасибо за предложение, я собираюсь попробовать.   -  person DewinaTwice    schedule 30.08.2017
comment
хорошо, спасибо, я понял. но я такой тупой, что не знаю, как им пользоваться, попытки займут часы.   -  person DewinaTwice    schedule 30.08.2017